使用注入的dll使用内存指针编辑值

时间:2016-03-17 21:17:35

标签: c++ pointers memory dll code-injection

所以我正在玩DLL注入并试图在一个小游戏中改变我的弹药的价值。我注入了DLL并且它很成功但是我在尝试编辑内存值时遇到了问题。

DWORD* address = (DWORD*)((*(DWORD*)(0x00400000 + 0x50F4F4)) + 0x150);  
*(int*)address = value;

每当我注入DLL并且这段代码运行时它会因访问冲突错误而崩溃,我甚至尝试使用VirtualProtect取消保护内存并且它仍然崩溃。相当新的,所以任何建议都表示赞赏,谢谢

1 个答案:

答案 0 :(得分:0)

您使用了错误的偏移量: DWORD* address = (DWORD*)((*(DWORD*)(0x00400000 + 0x50F4F4)) + 0x150);

0x50F4F4是攻击多维数据集中本地播放器对象的绝对虚拟地址。相对偏移为0x10F4F4。您应该将0x10F4F4添加到0x00400000或直接使用0x50F4F4。

正确的代码:

int* address = (int*)((*(DWORD*)(0x50F4F4)) + 0x150);
*address = 1337;

此游戏未使用ASLR,所以很好。