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=1065353216fast_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、看来结果完全一致,至此,大功告成。本文主要介绍了找内存基址,及如何分析指针值与实际值的对应规律。