- 5,020
- 7,103
Адрес должен быть не 0x100D3A78, а 0xD3DA78, и ты не добавил GetModuleHandleA("samp.dll") к адресу. Так что игра думает что ты обращаешься к памяти ГТА, а не сампа.Решил немного залезть в реверс.
Открыл иду и в неё кинул samp.dll.
Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.
Посмотреть вложение 186387
C++:SF->getSAMP()->registerChatCommand("patch", [](std::string params) { strcpy((char*)0x100D3A78, "SWWWWW CCCCCC the connection."); AddChat(-1, "Наверное, пропатчилось..."); });
Посмотреть вложение 186388
Вот патч как по мне правильный( мб хуйню сморозил )
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 байтов в память которая вообще может не быть строкой )
Последнее редактирование: