吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2487|回复: 0
上一主题 下一主题
收起左侧

[其他] 对最后一次异常法的理解

[复制链接]
跳转到指定楼层
楼主
Azh3n 发表于 2022-2-22 21:41 回帖奖励

对于最后一次异常,在脱壳中用得挺多,但是对于为什么它能脱壳,以前还是有点疑问的。。。

首先,对于这种方法,我想应该从壳的角度出发来说说,壳通过某种方法,在程序运行之前,拿到控制权,
怎么样拿到它的控制权呢?
我想:应该是 INT 3 , 当然还有一些其他的方法,想一些 调试器的函数, SDK 和 WDK 里面可以去查到的,
最近开始设计一些驱动方面的东西,才知道ring 0 , 是多么的强大,哦,回到正题。。。
当中断下来之后。。
对程序的PE 进行处理,当然处理的方法很多,包括 压缩个节表的东西,对 IAT 处理,加入花指令,哦,花指令
大量的用于对 调试器的检查,pushaf ... popaf , 这是一组产生异常的常用的方法,当然方法很多,当处理完之后的最后一次异常,壳将会把控制权交换给应用程序, OEP ,也就不远了。。。

说一下跑出异常的方法吧:
三种:  
1: 当遇到 SEH 的异常时: 可以当开 view --> seh line ---> 在 seh 下断点,运行就跑出来了。。
2: 可以在 seh handle 出反汇编跟随,就会来到出口,在出口下段,记住此时的代码可能会乱序,这是作者防止解密的行为,我们可以通过 shift + 箭头 来查看代码。。之后 ,shift + F9运行,就 O 了
PLUS:2中如果在在程序的领空,是不能在反汇编窗口跟随的。。。
3:在 ZwContion---> ecx + 0xb8 ---这就是异常的出口;可以在 vc 中查看这个函数的用法:如果没有记错; ZwContion(void *);

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-21 21:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表