这两天尝试逆向一个木马,MD5=C8102164058B27B5553924255093B643,再调试的时候遇到了一个诡异的地方。
调试到上图红框处时,看到调用的是个系统函数,就直接F8准备跳过了。结果,和我想得不一样的是,居然程序跳到了系统函数的内部,如图位置,注意红色框内地址明显不是正常程序内部,然后我继续无脑F9,还是在系统函数内部,但是看到报了个RtlRaiseException错误。查了很多资料发现原来这是恶意样本反调试的一种机制,因为调试时ollydbg会自动接管处理这种错误,所以没法绕开。而直接执行样本时,样本自身会跳过这个错误:
解决方案是,在ollydbg中选择选项(Options)-> 调试选项(Debugging Options) ->异常 -> 同时忽略以下指定的异常或范围 -> 添加范围(00000000-ffffffff), 然后就可以了。这样ollydbg就不会自动去处理这个错误。
然后在初始阶段那个函数的下一步下断点F2,随后F9,搞定!