新套路(1)
bp VirtualFree


在这里输入bp VirtualFree ,紧接着回车,然后执行
执行到用户代码

执行后界面变成这样,然后取消此处断点。
紧接着执行到用户代码(Alt+F9)或者如下图操作

最后,单步调试即可

记住到这里,

这个jmp eax是跳往OEP地址

这个方法感觉也就是借助VirtualFree作为一个踏板,跳到用户代码,剩下的单步调试就轻松多了
新套路(2)
bp VirtualFree


在这里输入bp VirtualFree ,紧接着回车,然后执行
执行到用户代码

执行后界面变成这样,然后取消此处断点。
紧接着执行到用户代码(Alt+F9)或者如下图操作

搜索push 8000(特征码)

我试了一下,失败了。。。可能3.0里面没有。。。。本来想到push 8000查到后,然后直接向下跟踪时会更快一点。。。但是没法找到这个特征码。。
新套路(3)
首先查看一下,这壳刚开始设置的SEH链的函数地址

一看就知道是0x3B6AB4,接下来一顿操作猛如虎
bp 0x3B6AB4

按下回车后,点击运行,然后到达这里

然后再这个return 下一行下断点

点击运行(shift+F9)
剩下的交给单步跟踪即可

新套路(4)
bp VirtualAlloc


按下回车,然后运行(shift +F9),运行后截图

执行到用户代码(Alt+F9)
先取消断点,然后执行到用户代码(Alt+F9)或者如下图操作

向下拉,看到jmp后,直接设置断点运行即可

找到第一个jmp后,然后单步往下调试,就能迅速找到跳转到OEP 的代码


新套路(5)(最后一次异常法)
利用最后一次异常直接跑飞,但前提的取消所有的异常

重新载入,记住是按了几次运行(shift+F9)才让程序运行起来的,利用最后一次的异常处理函数进行单步调试
第一次shift+F9

第二次shift+F9

总结:
两次运行才把程序运行起来,所以我们运行一次后,利用栈中存放的SEH处理函数,接着往下单步调试
第一次shift+F9

观察栈中,有一个SE handler,它就是异常处理函数的地址,直接找到它,然后下个断点,单步往下调试
搜索,下断
ctrl +G(搜索)

在异常处理函数下断也行,或者一步直接在异常处理函数return后面下断也行
第一次断

第二次断

接着单步调试
两次内存
第一次(.rsrc段)


点击运行
第二次(.txt段(一般为1000))

点击运行,运行后截图

然后下断运行

点击运行

接着单步向下跟踪

349

被折叠的 条评论
为什么被折叠?



