
18.01.2023, 07:22
|
|
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами:
3831395
Репутация:
183
|
|
Сообщение от Yuriy Code
Решил немного залезть в реверс.
Открыл иду и в неё кинул samp.dll.
Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.
C++:
Код:
SF
->
getSAMP
(
)
->
registerChatCommand
(
"patch"
,
[
]
(
std
::
string params
)
{
strcpy
(
(
char
*
)
0x100D3A78
,
"SWWWWW CCCCCC the connection."
)
;
AddChat
(
-
1
,
"Наверное, пропатчилось..."
)
;
}
)
;
Адрес должен быть не 0x100D3A78, а 0xD3DA78, и ты не добавил GetModuleHandleA("samp.dll") к адресу. Так что игра думает что ты обращаешься к памяти ГТА, а не сампа.
Вот патч как по мне правильный( мб ***ню сморозил )
C++:
Код:
// Функция для записи строки в память ( Автор вроде Скаут )
inline
void
writeString
(
char
*
memory
,
const
char
*
str
)
{
DWORD NewProtection
;
VirtualProtect
(
memory
,
sizeof
(
str
)
,
PAGE_EXECUTE_READWRITE
,
&
NewProtection
)
;
std
::
strcpy
(
memory
,
str
)
;
VirtualProtect
(
memory
,
sizeof
(
str
)
,
NewProtection
,
&
NewProtection
)
;
}
// Сам патч
writeString
(
(
char
*
)
GetModuleHandleA
(
"samp"
)
+
0xD3A78
,
"Сервер сдох на***"
)
Кстати при записи строк в память ( и вообще записи чего либо в память ) смотри не залезь на байты которые ты менять не должен ( к примеру в строке 5 символов, а ты записал 20, тем самым ты запишешь лишних 14 байтов в память которая вообще может не быть строкой )
|
|
|