|
|
| | 网站首页 | 初级教材 | 中级教程 | 高级教程 | 模块文档1.8 | 资源下载 | 外挂海论坛 | 加入外挂作坊 | | ||
|
||
|
|||||
|
|
|||||
| 07-初用CE | |||||
|
前节对于CE的主界面进行了些介绍,本节再介绍一下CE的简单用法. 本节的内容很简单,不过这节得讲一个有关找动态内存的重要依据.希望大家能学好. 在本节的例子包里,有一个演示程序 a.exe 还有一个 a.CT 这个a.CT 是我用CE对 a.exe 进行动态内存分析后的存档.
运行本节例子包中的 a.exe 然后用CE打开这个进程,见到 演示程序 上编辑框中的数值后,在CE里,尝试着搜索一下.见图上,我搜到了四个相关的内存地址,你可能会搜到更多或只搜到一个. 如果你搜到超过一个以上的地址时,可以等会,这个演示程序会每30秒变动一下数值.变动后,上面搜到的地址列表中的值也会跟着变.见下图
如上图,在30秒后,演示程序中的值发生了变化,而上面的列表框中,只有一个地址所对应的值保持着与编辑框中的相同,由此可见,该处的内存地址,是正确的.然后记录下该地址. 为了确认,该地址是否动态内存地址,我们得记录下这个内存地址后,关闭这个 a.exe 再次运行 a.exe 用CE打开它,然后再手动添加该地址 添加后
结果发现,添加后的这个指针所显示的值,与当前编辑框正显示的值不对.由此可以得出结论,该内存地址为动态地址. 即然是动态地址,那么我们就该用动态地址的方式来解决了. 首先我们来说说一些需要了解的问题,只有了解了这些问题后,才会对动态内存处理起来容易上手. 我们知道,一个数据,它不但要被写入内存,同时还必然会有被读取的时候.若一个数据光写入内存而不去读,那就没啥意义与作用了. 对于静态的内存地址,写也写到这个地方,读也在这个地方读,方便有简单. 对于动态的内存地址,一个数据被写入了某个内存地址后,它必需得把这个内存地址,放到某个静态的地方,好供读的时候,在那个静态的地方找到这个动态的内存地址,最后,读出要读取的数据. 若者,由要读的那段代码,申请一块内存,然后把这个内存地址,保存在某处静态地址中,然后负责写的代码从那静态地址处,得到要写到的内存地址进行写入. 上面的问题我们通俗的举个例子.比如说你正有事在找我,但我出门了,看来你直接是无法找到我了,幸好你有我的手机号,于是乎,你可以通过打手机找到我.这里的手机号就相对于保存动态内存地址的静态地址.也被称为父级指针或基址
根据上面说的方式,这回我们得聪明点了,除了第一次找到的编辑框中数值的内存地址后,再把这个内存地址 01134C10 进行再次搜索,目的就是为了找出他的父级内存地址,即有保存这个地址的地址.结果找出来了5个,呵呵! 一般若有找到多个父级地址的话,那么,尽量挑最上面的几个来分析.
在加到下面的列表中,选中一个地址,双击这个内存地址上进行编辑内存地址为 指针类型 如下图
改为指针类型后,点确定.注意,这里的父级指针可以填 004034DC 也可以填成 a.exe+34DC 前者是直接的虚拟内存地址,后者是存在于 a.exe 的领空内的偏移量
修改为指针后,可以看到内存地址是有 P-> 的标志,如果你看该项内存数据值十六进制不习惯的话,可以在这项上右键,设置为以十进制来显示. 接下来,把下面的几个地址也改为指针类型.
全部改成了指针类型并且以十进制方式显示出来了,看这些值都是相等并且同步显示.说明这些找到的父级指针都是有效的,好了,现在把研究成果保存起来吧!
通过前面的努力,我们找到了一些父级指针,看起来是有用的.现在我们得检验这些父级指针是否真的都可以用的时候了. 关闭 a.exe 重新运行,然后开启CE打开进程,再打开之前保存的档案,然后查看这些父级指针所取得的内存 数据值 是否与演示程序里的同步.最好多找几台电脑,多装几个操作系统来测试.最终那些能同步的父级地址都可以使用!!! 注意:有时候,某个内存地址可能会有多级的父级指针的.找父级地址时需要有点耐心,特别是找到的父级地址在重启游戏后无效的情况下,还得不断的尝试往更上一级查找!!! |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
|
|||||||||||
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|