Перейти к содержанию

Как подменить ассемблерную инструкцию в C++ ?


Рекомендуемые сообщения

*(int*)0x02F4B641 = 0x90909090;
memcpy((void*)(0x02F4B641), (char*)("\x90\x90\x90\x90"), 4);

Здравствуйте, я хочу заменить ассемблерную инструкцию на свою (на NOP) но у меня вылетает игра.

Делаю так:

 

(инструкция имеет размер 4 байта)

Помогите плиз что я делаю не так.

 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Gabriel сказал:

*(int*)0x02F4B641 = 0x90909090;

 

Вот тут не понятно, зачем ты получаешь указатель на адрес 0x02F4B641 возвращающий значение типа int и присваиваешь ему 0x90909090. Почему для записи байт не использовать WriteProcessMemory?

 

BYTE buffer[] = {0x90,0x90,0x90,0x90};

memcpy((void*)0x2F4B641, &buffer, 4);

 



 

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

7 минут назад, partoftheworlD сказал:

 

Вот тут не понятно, зачем ты получаешь указатель на адрес 0x02F4B641 возвращающий int и присваиваешь ему DWord  значение 0x90909090. Почему для записи байт не использовать WriteProcessMemory?

 

Какая разница DWORD этот тот же самый int только unsigned размер все равно 4 байта. WriteProcessMemory я еще не знаю как работать с процессами да и какая разница. Вообще я пишу DLL.

Ссылка на комментарий
Поделиться на другие сайты

Если пишешь DLL - то еще проще

В таком случае используй memset( void *dstAddress, int value, size_t size );

Но дело в том, что и твой код выглядит верно, соответственно вполне может быть, что ты NOP'ишь важный участок кода, который отвечает за дальнейшее выполнение. Попробуй сначала сделать это в отладчике.

Ссылка на комментарий
Поделиться на другие сайты

например так:

DWORD OldProtect;
DWORD_PTR Base = (DWORD_PTR)GetModuleHandle(L"user32.dll");
DWORD_PTR Address1 = Base+0x1000;
VirtualProtect((LPVOID)Address1,4,PAGE_EXECUTE_READWRITE,&OldProtect);
memcpy((void*)Address1,(char*)("\x90\x90\x90\x90"),4);
VirtualProtect((LPVOID)Address1,4,OldProtect,&OldProtect);

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.