基地址寻址和偏移地址应用案例

简介

基地址

个人理解:就是 一个软件在物理内存中存储数据的起始位置。

偏移地址

个人理解: 就跟偏移量差不多,内存起始位置+偏移地址 = 新的地址

通过基地址+偏移地址 定位 软件内的数据地址 并 进行修改

植物大战僵尸为例

定位阳光的绝对内存地址

以定位阳光为例:目前阳光 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
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值