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

问题描述 投票:1回答:1

因此,我正在玩DLL注入,并试图在一个小型游戏中更改弹药的价值。我注入了DLL,它成功了,但是我在尝试编辑内存值时遇到问题。

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

[每当我注入DLL并运行此代码时,它就会因访问冲突错误而崩溃,我什至尝试使用VirtualProtect取消保护内存,但它仍然崩溃。对此还很陌生,因此请多多指教,谢谢

c++ pointers memory dll code-injection
1个回答
0
投票

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

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

正确的代码:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.