ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   хук исходящих rpc с заменой данных (https://forum.antichat.xyz/showthread.php?t=1387046)

Majunti 06.05.2021 15:04

Как в SF реализовать хук ClientJoin?

sc6ut 09.05.2021 21:01

C++:





Код:

// в мейнлуп регаешь колбэк
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RAKHOOK_TYPE_OUTCOMING_RPC
,
outcomingRPC
)
;
bool
__stdcall
outcomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
RPC_ClientJoin
)
{
int32_t
version
;
uint8_t
mod
,
nickNameLen
,
authKeyLen
,
clientVerLen
;
std
::
string nickName
,
authKey
,
clientVersion
;
uint32_t
clientChallengeResponse
;
// читаешь данные
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
version
)
;
params
->
bitStream
->
Read
(
mod
)
;
params
->
bitStream
->
Read
(
nickNameLen
)
;
nickName
.
reserve
(
nickNameLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
nickName
.
data
(
)
)
,
nickNameLen
)
;
params
->
bitStream
->
Read
(
clientChallengeResponse
)
;
params
->
bitStream
->
Read
(
authKeyLen
)
;
authKey
.
reserve
(
authKeyLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
authKey
.
data
(
)
)
,
authKeyLen
)
;
params
->
bitStream
->
Read
(
clientVerLen
)
;
clientVersion
.
reserve
(
clientVerLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
clientVersion
.
data
(
)
)
,
clientVerLen
)
;
// меняешь данные
// обратно вписываешь данные
params
->
bitStream
->
ResetWritePointer
(
)
;
params
->
bitStream
->
Write
(
version
)
;
params
->
bitStream
->
Write
(
mod
)
;
params
->
bitStream
->
Write
(
static_cast

(
nickName
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
nickName
.
c_str
(
)
,
nickName
.
size
(
)
)
;
params
->
bitStream
->
Write
(
clientChallengeResponse
)
;
params
->
bitStream
->
Write
(
static_cast

(
authKey
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
authKey
.
c_str
(
)
,
authKey
.
size
(
)
)
;
params
->
bitStream
->
Write
(
static_cast

(
clientVer
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
clientVersion
.
c_str
(
)
,
clientVer
.
size
(
)
)
;
}
return
true
;
}



Время: 11:35