[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
http://www.darkst.com/bbs/viewthread.php?tid=7
定义: Seh异常就是数结构化异常处理,Win32 结构化异常处理是操作系统提供的一种服务。好处: 在编译器的 SEH 层减少了直接使用纯操作系统的 SEH 所带来的危害缺点: 将纯操作系统的 SEH 搞成非透明当程序遇到Seh异常时,异常交给系统处理(这将是一个非常负责的过程,很容易跟飞),所以利用Seh异常可以一定程度的防止程序被调试。(seh异常在壳里是很常见的)
步骤:1、 保留所有异常,载入程序。按"SHIFT"+"F9",并开始记数M,直到程序运行。2、 重新载入程序。按"SHIFT"+"F9"忽略异常M-1次。3、 查看堆栈窗口中,"SE 句柄"前面的地址。4、 按"ctrl+g",打开表达式跟随窗口,输入,在堆栈窗口查到的地址。5、 F2下断,按"SHIFT"+"F9"来到断点处,去掉断点。6、 在OD的右下角会出现一个SE句柄,按CTRL+G,输入SE 句柄前的地址。7、 F2下断,SHIFT+F9来到断点处。8、 去掉断点,F8走到程序的OEP。
原理:加密壳有反跟踪代码,许多SEH陷阱使OD调试时产生异常,当壳程序执行完毕后,将没有异常。若Shift+F9略过所有异常,并找到最后一次异常处,此刻在恢复异常处(即SE句柄处的地址)下断,OEP即在附近。
优点:脱加密壳的非常有效缺点:1、异常过多容易产生厌烦2、只适用于加密壳。