相关组装:
$ > 94D3A705 PUSH hw.05A7D394 ; ASCII "glBegin"
$+5 > E8 99C80500 CALL <JMP.&SDL2.SDL_GL_GetProcAddress>
$+A > 83C4 04 ADD ESP,4
$+D > A3 04E03B06 MOV DWORD PTR DS:[63BE004],EAX
$+12 > 8B0D 04E03B06 MOV ECX,DWORD PTR DS:[63BE004] ; OPENGL32.glBegin
$+18 > 890D 38E83B06 MOV DWORD PTR DS:[63BE838],ECX
第一行将字符串地址作为函数参数压入堆栈。最后一行将 ECX 中的值复制到此 DWORD 数据对象。这个地址是我的目标。我想替换包含的 DWORD 值。
在我的 C++ 代码中,我首先获取第一行的 push 函数的地址,然后添加一个偏移量。通过添加偏移量 0x1A 代码可以工作,但是当我尝试添加 + 0x18 时它不起作用。
我不喜欢对每个功能都进行测试,我缺少的基本思想是什么?