既当发生中断时,程序会有一个中断点,会保存当前的入口地址,然后跳转到你所提供的(或默认的)程序入口,执行所跳转到的代码.当执行完该段代码拍带后,跳出该段地址,恢复原来的入口地址,继续执行原来袭银芦的代码.
单步跟踪法1.用OD载入,点"不分析代码!"
2.单步向下跟踪F8,实现向下的跳。如态指也就是说向上的跳不让其实现!(通过F4)
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点-->运行到所选)
4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP
6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7.一般有很大的跳转(渣配大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
每遇到红线的跳转,就在跳转语句的下一句增加断点
这里闭握应该是说在下面设置断点吧~
不明白没有关系多看慢慢理解
跳下面如果是nop可以在下一句F4
因为nop是无效句
所以在nop里面F4没有意义
跳分向上或者向下
向上的跳才在下面F4跳过
向下就不用咯~
因为程序是从上向下执行的~
如果他向上跳最执行下来
不设置断点跳过他
你猴年马月都到不了OEP
跳转指令就是程序跳转到标记位置继续执行,被跳过的部分滑洞不执行调用子程序就是从当前跳到子程序段,执行完晌世后返回继续执行CALL的下一条程序
中断指令和执行子程序过程类似,都是跳转、执行、返回断点继续执行,但它可能在程序的任何地方执行(由外部条件触发),而子程序调用是程信谨枯序运行到特定位置时才执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)