CE教程 第五章 《指针》

步骤 6: 指针: (密码=098712)
上一步解释了怎样用代码寻找功能对付变化位置.但单独用不容易找到地址并修改成你要的数值.这就是为什么要用到指针了.
在TUT下面有两个按钮,一个会改变数值,另一个不但会改变数值并且还会改变数值在内存中的位置.在这一步,你不需要真的懂汇编,但如果你懂的话会很有帮助.

首先找到数值的地址,当你找到后,再找找是什么在改写这个地址。再次改变这个数值,这样会找到一个代码地址,双击这个代码地址(或者选择它并点击更多信息),这样一个新的窗口会打开并显示详细的信息告诉你当这个指令运行时会发生什么事(提示:这个新出来的窗口上,那条指令会是红色的)。
如果这个汇编指令里面没有包括一个在方括号中的东西,(提示:说明这个不是我们要的)那么再看看代码地址列表中另一个代码地址。如果有方括号,就是说CE认为找到了数值的指针了.

回到CE主窗口,(你可以让那个扩展信息窗口开着,但如果你关了,要记住在方括号中间的内容)(提示:要关了那个有代码地址列表的窗口,才能回到CE主窗口,但扩展信息窗口可以不用关掉)并做一次4字节的扫描,扫描扩展信息窗口告诉你的十六进制数。(提示:就是方括号里面的内容,如果方括号里面是[eax],那么看看扩展信息窗口下面EAX=后面的数值)。

当扫描完成时它可能返回一个或几百个地址。大多数情况下你要的会是最小(提示:指地址最小,也就是排在列表的最上面)那一个。

现在点击手工添加内存地址并在"指针"这个选项上打勾.这个窗口将会改变,并允许你填入指针的地址和偏移量.在地址那里填入你刚才扫描到的地址.

如果汇编指令在后面有一个计算(例如:[esi+12])那么把数值填在后面,否则让它保持0

(提示:就是如果有类似那样的计算,把12这个数值填在偏移量那里,否则那里填0),如果是更复杂的指令,看看它的算式.举例说明更复杂的算式:[EAX*2+EDX+00000310] eax=4C 并且 edx=00801234.

(提示:这时各个寄存器的值在扩展信息窗口下方,那里有各个寄存器在执行这条指令时的值).在这个情况下EDX会是数值的指针,而EAX*2+00000310则是它的偏移量,所以你要填的偏移量会是
2*4C+00000310=3A8.(这些都是在十六进制下计算的,使用WINDOWS的计算器在科学方式下用十六进制计算).

点击确定,这个地址将会加到列表上,如果没搞错,将会显示P->xxxxxxxx,xxxxxxxx就是你找到的数值的地址。如果不正确,那你一定是哪里做错了

现在,使用那个指针改变数值为5000并锁定(就是在下面的地址列表中,点最前面锁定那一栏的勾)它,然后点击TUT的"改变指针"按钮,如果一切正确,那么"下一步"按钮将变成可见的了.

额外信息:
在这个TUT中,事实上数值是由一个指针指向另一个指针(提示:再指向真正的数值,就是使用了"指针的指针"),但要完成这个TUT只需要一个指针。要找到这个指针[提示:要找到指向指针的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值