动态分配内存的游戏怎么样找内存地址

本文介绍了如何通过使用CE和OD动态寻找游戏中人物HP的内存地址。通过逐步分析代码和调用堆栈,揭示了HP地址在切换地图时的变化规律,最终找到了一个相对固定的基地址,通过特定偏移量计算出HP值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工具:CE5.2+OD1.10
目标:搜索人物基地址
第一步,用CE搜索人物HP,得到一堆地址,掉血后继续搜索,得到唯一地址0ABDC360(HP地址)
第二步,切换地图后发现该地址里的值已经不是HP,是动态地址,重复第一步搜索出新的HP地址(地址省略)
第三步,这时候不再切换地图,用CE5.2对找到的HP地址下写访问内存断点,此步也可用OD下写内存断点,找到汇编语句如下
0044B280 55 PUSH EBP
0044B281 8BEC MOV EBP,ESP
0044B283 56 PUSH ESI
0044B284 8BF1 MOV ESI,ECX ; 1.2 esi=ecx
0044B286 8B4E 04 MOV ECX,DWORD PTR DS:[ESI+4]
0044B289 8B01 MOV EAX,DWORD PTR DS:[ECX]
0044B28B 57 PUSH EDI
0044B28C FF90 14010000 CALL DWORD PTR DS:[EAX+114]
0044B292 83F8 02 CMP EAX,2
0044B295 8B3D 48465700 MOV EDI,DWORD PTR DS:[<&tEngine.?tThrowS>; tEngine.?tThrowStringException@@YAXPBDZZ
0044B29B 75 19 JNZ SHORT Game.0044B2B6
0044B29D 68 63050000 PUSH 563
0044B2A2 68 54975700 PUSH Game.00579754 ; ASCII “./DataPool/GMDP_CharacterData.cpp”
0044B2A7 68 48975700 PUSH Game.00579748 ; ASCII “CT_MONSTER”
0044B2AC 68 20975700 PUSH Game.00579720 ; ASCII “Character must not %s,(file:%s Line:%d)”
0044B2B1 FFD7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值