Receiver
25.07.2021, 15:53
Принцип работы: хукаем функцию writecallback, которую необходимо передавать cURL, чтобы он мог записать в writedata ответ сервера (и никакой подмены сервера не нужно)
Код:
C++:
[CODE]
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#pragma comment(lib, "minhook_32.lib")
// Это строка, на которую мы подменим ответ от сервера
char
fake_src
[
219
]
=
R"(cd42404d52ad55ccfa9aca4adc828aa5800ad9d385a0671fb cbf724118320619 3861248
2d9675d849a9a7b52334735a0c621ccb6c203d6b1da7f759e7 19b0a3013f849c 7634608
e469ab66d7a9e90e2b1fa843933d701b0acaacfa9ce1cb0f42 74b2ec720b90d8 4931520)"
;
using
writecallback_t
=
int
(
__cdecl
*
)
(
void
*
,
int
,
int
,
void
*
)
;
writecallback_t writecallback_orig
;
int
writecallback_hooked
(
void
*
a_src
,
int
a2
,
int
a3
,
void
*
a4
)
{
std
::
cout
(
module_handle
)
;
std
::
cout
(
base_address
+
0x2DB30
)
;
// Тут адрес функции writecallback
std
::
cout
(
&
writecallback_orig
)
)
;
MH_EnableHook
(
hook_address
)
;
std
::
cout
Код:
C++:
[CODE]
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#pragma comment(lib, "minhook_32.lib")
// Это строка, на которую мы подменим ответ от сервера
char
fake_src
[
219
]
=
R"(cd42404d52ad55ccfa9aca4adc828aa5800ad9d385a0671fb cbf724118320619 3861248
2d9675d849a9a7b52334735a0c621ccb6c203d6b1da7f759e7 19b0a3013f849c 7634608
e469ab66d7a9e90e2b1fa843933d701b0acaacfa9ce1cb0f42 74b2ec720b90d8 4931520)"
;
using
writecallback_t
=
int
(
__cdecl
*
)
(
void
*
,
int
,
int
,
void
*
)
;
writecallback_t writecallback_orig
;
int
writecallback_hooked
(
void
*
a_src
,
int
a2
,
int
a3
,
void
*
a4
)
{
std
::
cout
(
module_handle
)
;
std
::
cout
(
base_address
+
0x2DB30
)
;
// Тут адрес функции writecallback
std
::
cout
(
&
writecallback_orig
)
)
;
MH_EnableHook
(
hook_address
)
;
std
::
cout