
14.10.2024, 00:14
|
|
Новичок
Регистрация: 15.11.2021
Сообщений: 7
С нами:
2366020
Репутация:
3
|
|
Сообщение от whyega52
Для начала укажи, под какую версию сампа ты делаешь плагин (можно и под несколько, но если делаешь клиент проекта, то зачастую лучше остановиться на 1, ибо расширение функционала будет боль)
Чтобы заменить надпись в чате, тебе надо найти, где samp.dll берет указатель на эту надпись. На R3 это 0xB7C5 (команда push состоит из 5 байт, первый обозначает саму команду, а остальные адрес строки, поэтому 0xB7C4 + 0x1) Для работы с памятью я буду использовать memwrapper:
C++:
Код:
// будем использовать функцию, которая будет копировать строку из плагина в адресное пространство gta_sa.exe
// это поможет в случае выгрузки плагина не крашнуть игру
void
write_allocate_string
(
std
::
string str
,
std
::
uintptr_t address
)
{
void
*
allocAddress
=
VirtualAlloc
(
nullptr
,
str
.
size
(
)
,
MEM_COMMIT
,
PAGE_READWRITE
)
;
memcpy
(
allocAddress
,
str
.
c_str
(
)
,
str
.
size
(
)
)
;
// при этом, нам никто не мешает использовать сразу запись по адресу нашей строки, находящейся внутри памяти нашего плагина
memwrapper
::
write_memory
(
address
,
allocAddress
)
;
}
auto
samp_base
=
reinterpret_cast
(
GetModuleHandleA
(
"samp.dll"
)
)
;
write_allocate_string
(
samp_base
+
0xB7C5
,
"Моя *****тая надпись1336"
)
;
Для проверки на айпи сервера тебе надо ставить хук на какую-то из функций сампа, отвечающую за коннект, к примеру RakClient::Connect (r3: 0x339F0). Для этого можешь использовать библиотеки по типу kthook
браток, а как еще можно находить адреса ?) оффсеты ?
|
|
|