 |

27.08.2024, 23:35
|
|
Участник форума
Регистрация: 24.07.2019
Сообщений: 170
С нами:
3583288
Репутация:
68
|
|
Всем привет, использую данный проект https://www.blast.hk/threads/163884/, и в нём есть эмуляция RPC. Я сохранил bitstream RPC, который я отправляю на сервер в текстовый файл и там он находится в следующем виде - 14, 225, 1, 0, 0, 12, 0, 99, 101, 102, 95, 114, 112, 99, 95, 97, 117, 116, 104, 31, 0, 131, 164, 100, 97, 116, 97, 169, 86, 101, 110, 121, 97, 104, 50, 50, 50, 162, 105, 100, 166, 113, 101, 55, 48, 105, 112, 163, 107, 101, 121, 1. Знаю ID RPC и имею bitstream RPC я лично попытался вот таким образом сделать
C++:
Код:
bool
emulateRPCFromFile
(
const
std
::
string
&
filename
,
int
rpcId
,
RakNet
::
BitStream
&
bs
)
{
// Открываем файл для чтения
std
::
ifstream
inFile
(
filename
)
;
if
(
!
inFile
.
is_open
(
)
)
{
MessageBoxA
(
NULL
,
"Unable to open file for reading"
,
"File Error"
,
MB_OK
|
MB_ICONERROR
)
;
return
false
;
}
// Читаем содержимое файла как текст
std
::
string line
;
std
::
getline
(
inFile
,
line
)
;
inFile
.
close
(
)
;
// Очистка BitStream
bs
.
Reset
(
)
;
// Записываем ID RPC
//bs.Write(rpcId);
// Записываем размер данных (количество байтов через запятую)
/* unsigned int size = static_cast(std::count(line.begin(), line.end(), ', ') + 1);
bs.Write(size);*/
std
::
ofstream
outFile
(
"test.txt"
)
;
if
(
!
outFile
.
is_open
(
)
)
{
MessageBoxA
(
NULL
,
"Unable to open test.txt for writing"
,
"File Error"
,
MB_OK
|
MB_ICONERROR
)
;
return
false
;
}
// Записываем строку данных в BitStream как есть
std
::
istringstream
iss
(
line
)
;
std
::
string token
;
while
(
std
::
getline
(
iss
,
token
,
','
)
)
{
int
byte
=
std
::
stoi
(
token
)
;
// Преобразуем строку в число
bs
.
Write
(
static_cast
(
byte
)
)
;
// Записываем байт в BitStream
outFile
AddMessage(0xFFFFFFFF, "Plugin loaded");
StringCompressor
::
AddReference
(
)
;
//rakhook::on_receive_rpc += std::bind(&PluginRPC::onServerMessage, &RPC, _1, _2);
rakhook
::
on_receive_rpc
+=
std
::
bind
(
&
PluginRPC
::
onReceiveRPC
,
&
RPC
,
_1
,
_2
)
;
rakhook
::
on_receive_rpc
+=
std
::
bind
(
&
PluginRPC
::
onReceiveCEF
,
&
RPC
,
_1
,
_2
)
;
rakhook
::
on_receive_packet
+=
std
::
bind
(
&
PluginRPC
::
onReceivePacket
,
&
RPC
,
_1
)
;
rakhook
::
on_send_rpc
+=
std
::
bind
(
&
PluginRPC
::
onSendRPC
,
&
RPC
,
_1
,
_2
,
_3
,
_4
,
_5
,
_6
)
;
inited
=
true
;
}
return
hook
.
get_trampoline
(
)
(
)
;
}
Однако почему-то не работает...
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|