简介
基地址
个人理解:就是 一个软件在物理内存中存储数据的起始位置。
偏移地址
个人理解: 就跟偏移量差不多,内存起始位置+偏移地址 = 新的地址
通过基地址+偏移地址 定位 软件内的数据地址 并 进行修改
植物大战僵尸为例
定位阳光的绝对内存地址
以定位阳光为例:目前阳光 1111
在这里插入图片描述
1、应用Cheat Engine 软件定位阳光的绝对地址(16进制)
选择植物大战僵尸的进程点击确定
输入阳光目前的值 扫描类型为精准数值 然后点击首次查询。
此时就可以搜索出来 在该应用中哪一块的内存值为1111,随后就需要判断列表中哪一个内存地址为真实的阳光地址,具体阳光真实地址判断可以在应用进行更改阳光的数值,然后看 cheat engine 软件扫描出来的内存地址对应的值是否发生变化,可参考如下。
在应用中更改阳光的数值
此时打开cheat engine软件 看下更改扫描出来的内存地址 对应的值是否发生变化,如果发生变化那就是真实阳光的地址,阳光真实地址:1E8561E0。
更改物理内存 1E8561E0 对应的值 将值改为 9999
发现植物大战僵尸内的阳光值也跟着修改
定位软件的基地址和偏移地址
通过上面定位阳光的绝对地址 1E8561E0,此时就需要找到哪里访问了这个1E8561E0地址一层一层的跟踪最后得到 基地址, 基地址加上一层一层的偏移地址 等到 阳光的地址,为啥要用基地址+加上偏移地址得到 阳光的地址,因为 阳光的绝对地址 每一次重启游戏的时候都会发生变化不确定,所以需要通过 基地址+ 偏移地址得到= 阳光地址,具体定位方式参考如下:
查找哪一块访问了这个内存1E8561E0
此时就可以得到有这些指令访问了这块内存,点击可看详情信息。
将具体操作的指令拷贝出来:
PlantsVsZombies.exe+89825:
0048981D - 84 C0 - test al,al
0048981F - 0F85 0E010000 - jne PlantsVsZombies.exe+89933
00489825 - 8B 86 60550000 - mov eax,[esi+00005560] <<
0048982B - 33 C9 - xor ecx,ecx
0048982D - 85 C0 - test eax,eax
EAX=0000270F
EBX=00000003
ECX=00000000
EDX=0C6CB968
ESI=1E850C80
EDI=1B764280
ESP=00199790
EBP=0019FA98
EIP=0048982B
First seen:10:55:28
Last seen:11:04:33
mov eax,[esi+00005560] 此时就可以看到 esi 寄存器地址+00005560地址 就等于 = 阳光的地址(1E8561E0),并将值赋值给eax寄存器
查看下面esi寄存器值为:1E850C80, 继续往下一层找看看哪块访问了 1E850C80 内存地址
还是按照上一个步骤 按照绝对值去搜索1E850C80地址 然后将搜索出来的结果 看看哪块访问了这个地址1E850C80,然后将访问1E850C80地址的代码粘贴出来 看看 是 怎么得出来的这个地址1E850C80
PlantsVsZombies.exe+52673:
0045266A - 80 BF CF040000 00 - cmp byte ptr [edi+000004CF],00
00452671 - 74 28 - je PlantsVsZombies.exe+5269B
00452673 - 8B B7 68070000 - mov esi,[edi+00000768] <<
00452679 - 85 F6 - test esi,esi
0045267B - 74 1E - je PlantsVsZombies.exe+5269B
EAX=00452650
EBX=0019FD00
ECX=026FA0F8
EDX=00667BA0
ESI=1E850C80
EDI=026FA0F8
ESP=0019FC60
EBP=00000001
EIP=00452679
First seen:11:11:46
Last seen:11:12:33
此时就可以看到edi 寄存器地址+ 00000768地址 就等于 = 1E850C80地址。并且将地址赋值给esi寄存器和上面正好对上。
看下面的EDI寄存器值为 026FA0F8 然后继续往下找看看哪块访问了026FA0F8 地址
此时基地址 就已经找到了:PlantsVsZombies.exe+2A9EC0
此时就需要把 PlantsVsZombies.exe+2A9EC0 地址转换为具体的十六进制物理地址:6A9EC0
然后就可以通过基地址 +偏移地址 = 阳光地址了
具体公式为:[[PlantsVsZombies.exe+2A9EC0]+00000768]+00005560