2.5 CE修改器:寻找数值指针

举报
微软技术分享 发表于 2023/11/13 09:48:16 2023/11/13
【摘要】 上一步阐述了如何使用代码替换功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针,在本关的Tutorial.exe窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。接下来我们将找到内存中的基址,为什么要找指针,在前面的教程中,如果各位细心观察的话就会发现 在笔者截图中的出现地址和你的地址并不相同。也就是说,这些地...

上一步阐述了如何使用代码替换功能对付变化位置的数据地址,但这种方法往往不能达到预期的效果,所以我们需要学习如何利用指针,在本关的Tutorial.exe窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。接下来我们将找到内存中的基址,为什么要找指针,在前面的教程中,如果各位细心观察的话就会发现 在笔者截图中的出现地址和你的地址并不相同。也就是说,这些地址是一直在变化的,我们把它叫做动态地址,我们必须寻找到该动态地址的基址,并以此来保证唯一性。

在本关的 Tutorial.exe 窗口下面有两个按钮,一个会改变数值,另一个不但能改变数值而且还会改变数值在内存中存储的位置。这一步,你不需要懂得汇编,但如果懂的话会很有帮助。

  • 首先找到数值的动态内存地址,然后再 [找出是什么改写了这个地址]。
  • 再次改变数值,CE便可以列出找到的汇编代码。 双击一行汇编代码(或选择它并点击 “详细信息”)会打开 [详细信息] 窗口以显示详细的信息。
  • 查找方括号内的汇编指令集,寻找到偏移地址,并继续搜索地址,依次寻找下去知道找到绿色基地址位置。

首先第一步,读者应该使用精确数值扫描功能寻找到特定的一个内存地址空间,如下图所示则是动态内存地址空间;

image.png

接着第二步则是通过在内存地址处,鼠标右键选择是什么改写了这个地址,并再次让内存地址发生改变,如下图所示;

image.png

至此读者通过双击打开mov [edx],eax则可看到当前汇编指令的详细输出情况,寄存器EDX后面并没有任何偏移地址,此时读者只需要关注EDX寄存器的值,因为该值保存有指向下一个区域的内存地址,将地址01A252A8复制到剪辑版中;

image.png

将新地址以十六进制格式搜索四字节,并可输出一个绿色的"Tutorial-i386.exe"+2566B0没错,该地址就是一个基地址,此地址在程序重启后也不会发生任何的变化。

image.png

此时读者可以将该地址添加到底部的选择框中,点击选择空中的手动添加地址并选中添加偏移为0,即可动态得到当前的内存地址,如下图所示;

image.png

但需要注意的是,此处的指针为什么需要使用0呢,如果汇编指令中的方栝号里存在计算(例如:[esi+12])则需要把数值部分填在"Offset (Hex)"的文本框中,如果不存在则让它保持为0。

如果看上去是更复杂的计算指令的话(举例说明):[EAX*2+EDX+00000310] eax=4C 并且 edx=00801234 。

这种情况下EDX便是数值的指针,而EAX*2+00000310则是它的偏移量, 所以你要填在"Offset (Hex)"的将是2*4C+00000310=3A8

回到教程,点击"确定"这个地址便会加到 CE 主窗口下方的地址列表中,如果没做错,在地址栏将显示 P->xxxxxxxx,而 xxxxxxxx 和你扫描到的地址数值是一致的,如果不一致,那么可能是哪里出错了。
现在, 改变那条指针地址的数值为 5000 并锁定它,然后点击 Tutorial.exe 窗口上的"改变指针"按钮,如果一切正确,"下一步"按钮将变为可点击状态。

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。