Я пытаюсь написать прыжок в память, и я не могу найти нигде, что может объяснить мне, как это работает.Write jump to memory
typedef UINT(WINAPI* tResetWriteWatch)(LPVOID lpBaseAddress, SIZE_T dwRegionSize);
UINT WINAPI ResetWriteWatchHook(LPVOID lpBaseAddress, SIZE_T dwRegionSize){
printf("Function called\n");
return 0;
}
void main(){
DWORD64 hookAddr = (DWORD64)&ResetWriteWatch;
WriteJump(hookAddr, ResetWriteWatchHook/*Let's say it's 0x7FE12345678*/);//Writes E9 XX XX XX XX to memory
}
Моя главная проблема в том, что я не понимаю: как преобразовать ассемблерный JMP 0x7FE12345678 к E9 XX XX XX XX, так что я могу написать это в hookAddr.
Процесс - 64 бит.
Что вы пытаетесь сделать здесь, что нельзя сделать с помощью обычного C++? Связано ли это с углом Detours? – tadman
Я не уверен, что это можно сделать с помощью обычного C++, но я не знаю много функций api windows, поэтому это лучший способ сделать это. (ResetWriteWatch находится в файле kernel32.dll) – ioospa