多语言展示
当前在线:921今日阅读:27今日分享:41

CE_step9血量基址及变化规律

CE是专门的内存编辑软件,在自带的教程step9中,是2组人减血游戏。在这里,不介绍如何玩赢这个游戏,只是想介绍一下如何找内存基址。话不多说,直接上图。
工具/原料

CE

方法/步骤
1

这是step9的界面:

2

在CE中选定程序的程序

3

搜索值498

4

点击altack,值变成497,再次搜索

5

返回的列表中,只剩下唯一的一个地址了,双击该地址,加到入列表。

6

找出什么是写这个地址:

7

找到的指针是:05259F60

8

因为指针是某块内存的值,所以,搜索该指针所在的地址:

9

返回2个内存地址,现在先测试第一个,方法同上,先把该地址加到列表中,再后选择是什么该问了该地址:

10

找到的地址是003349A0,再重复以上步骤:

11

这次返回了81个地址,这么多地址,如果一个一个试,就太费时间了。先看一下有没有基址(颜色是绿色的)。在图中,找到一个基址,我们试着添加指针,看看结果。

12

记着偏移量和基址地址:

13

偏移量是怎么来的呢?上面的每步找地址的步骤,都有一个结果,看下图:

14

添加完指针后,看看结果值:

15

值明明是495,怎么指针值却是1140293632呢?我们把495改成100,看看指针值有没有变化:

16

把495改成100后,指针值变成了1120403456,看来实际值跟指针值是存在对应关系的。现在要做的,就是把这种对应关系找出来。下图是1-25值与之对应的指针值:

17

分析一下,就可以注意到,指针值的变化是有规律的:指针差存在次数规律。根据这种规律,用python写成代码,就能实现值与指针的一一对应。代码如下:[c.plm@localhost ~]$ cat while.py #!/usr/local/bin/python3.3fast_long=1fast_short=8388608loop=1step=1while loop <=1000:        for x in range(step):                print(str(int(fast_long))+'  '+str(loop)+'      '+str(int(fast_short)) + '   '+ str(x))                fast_long+=fast_short                loop+=1        step*=2        fast_short/=2[c.plm@localhost ~]$

18

下图是运行结果:

19

现在随便找个值测试一下:先把值改为1010,看看指针值是多少?

20

1010对就的指针值是1149009920,看看刚才程序的结果:

21

看来结果完全一致,至此,大功告成。本文主要介绍了找内存基址,及如何分析指针值与实际值的对应规律。

推荐信息