yangand 发表于 2011-10-26 10:56

当你步过了关键代码

       在你进行逆向分析,单步跟踪的时候,刚好经过了一个跳转,一下就跳向了失败,或者发现刚好跳过了成功的地方,这时你会怎么做?
       以前我都是重新在刚才那个跳转的上方的关键CALL重新下断点,再重新运行一下程序,这样就会停在了下断的地方,就可以重新分析了。

       现在我会这样,在想下断的地方,直接右键选择"在此处新建EIP“,可以取代上面的方法。不过这时注意,不是在关键CALL的地方下断,而是要上关键CALL上面的第一个参数的位置下断

      比如:
      push XXX
      push yyyy
      call   zzz
      JNZwwww
      就要选择在PUSH XXX的地方新建EIP,因为CALL是受CALL的参数影响的,如果丢失了参数,CALL运行就会出错。
   如果只是想改一个关键跳JNZ nop掉,或者改JMP,或者只改一下寄存器标志位的值 ,那也可以在JNZ的位置新建EIP。

       如果你走过了过多的代码,在上一个CALL的参数或JNZ新建EIP有可能也不行。因为你走过的代码,可能会影响本段的执行结果。这时你就要找一个,不会影响执行结果的地方新建EIP的了,这是唯一标准。通常在没有改变本段CALL参数的时候,可以直接在段首新建EIP。如果改变了,那么这个方法就不好使了,只能采用下断点的方法,重新来过了。

aau 发表于 2011-10-26 11:17

搞懂EIP为何就行,不用这么麻烦

yangand 发表于 2011-10-26 11:59

仅供菜鸟参考。。。

鬼刀 发表于 2011-10-27 11:36

嗯 学到一招

qzy0549 发表于 2011-10-27 13:21

说说原理 难道下断不行吗 为什么要EIP

love夜弦 发表于 2011-10-27 15:22

什么是EIP

yangand 发表于 2011-10-27 20:57

回复 qzy0549 的帖子

可以下断,新建EIP比下断省事

yangand 发表于 2011-10-27 20:58

回复 love夜弦 的帖子

让程序从这个地址开始执行

qzy0549 发表于 2011-10-27 22:50

yangand 发表于 2011-10-27 20:58 static/image/common/back.gif
回复 love夜弦 的帖子

让程序从这个地址开始执行

嗯 明白你的意思了 这倒的确是个好方法

love夜弦 发表于 2011-10-28 08:49

回复 yangand 的帖子

谢谢 又长见识了
页: [1] 2
查看完整版本: 当你步过了关键代码