吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 868|回复: 10
收起左侧

[新手问题] 最后一次异常法脱壳原理是啥?

[复制链接]
朱朱你堕落了 发表于 2024-2-21 22:18
233吾爱币
刚开始初级的脱壳教程都会演示最后一次异常法如何脱一些加密壳,但是从来
也没讲过原理。为啥用异常就可以脱壳?
1
如果你自己编译一个普通程序,那肯定不会发生异常吧,异常了程序都崩溃了,
还怎么运行,写程序要运行起来才行,异常了咋正常使用?那为什么加密壳异常了,
却还能运行,这些异常是壳作者故意加上去的吗?目的何在?
2
壳产生异常,异常谁在处理,是操作系统自己,还是壳作者的写的异常处理
函数来处理?比方说od里忽略异常去掉,壳产生了很多异常,比方说除零异常
吧,为什么会有除零的情况发生,想不通。
3
如果说异常是为了反调试,shift +F9就能继续运行程序了,哪里起到反调试的作用了?
4
为啥最后一次异常能用于快速找到oep?

我想不通好久了都,特发帖求助大佬解惑,谢谢。

最佳答案

查看完整内容

1、异常是windows系统的一种错误处理机制,处理流程是,所有异常先由系统捕获,根据seh链,逐级进行处理,一般是先交给用户程序处理,最后交给系统处理,没人处理就报错,崩溃! 2、加壳程序的异常是壳故意产生的,目的就是反跟踪,反调试,还有改变程序流程。 3、至于调试器忽略异常执行,那就是调试器不处理异常,让程序自己处理异常,没检测的反调试一是因为调试器骗了程序,二是因为程序检测没写好。 4、既然异常是壳故意为 ...

免费评分

参与人数 3吾爱币 +2 热心值 +1 收起 理由
wangls10 + 1 谢谢@Thanks!
netspirit + 1 为啥你每次cb都没了还能发高价悬赏啊?
董督秀 + 1 我很赞同!

查看全部评分

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

cndml 发表于 2024-2-21 22:18
1、异常是windows系统的一种错误处理机制,处理流程是,所有异常先由系统捕获,根据seh链,逐级进行处理,一般是先交给用户程序处理,最后交给系统处理,没人处理就报错,崩溃!
2、加壳程序的异常是壳故意产生的,目的就是反跟踪,反调试,还有改变程序流程。
3、至于调试器忽略异常执行,那就是调试器不处理异常,让程序自己处理异常,没检测的反调试一是因为调试器骗了程序,二是因为程序检测没写好。
4、既然异常是壳故意为之,最后一次异常后,壳基本上干完自己的事情了,接着就该打扫战场,跳到oep了。
爱飞的猫 发表于 2024-2-21 22:43
壳子加异常来烦你呗 烦到你不耐烦 最后放弃
然后就是可以混淆控制流。上一秒还在好好的执行代码,下一秒突然跳到别的地方(错误处理函数)执行了,处理完后又突然跳回去或别的地方继续了。
壳注册错误处理。异常被系统捕捉,然后派发给注册的错误处理函数。win 异常有几种,细节我也不清楚。
等不异常了 通常代表壳子处理结束了 程序正常运行了
所以就观察什么时候开始不触发异常 这个时候要么快到oep,要么比较容易分析后续内容

大概这样 翻了翻其他人的文章

点评

手机打字真不方便,打了好多字,一个返回误操作,全没了,算了,另外问下,od菜单或哪个按钮也能实现键盘的shift+f9忽略异常运行?没发现有啊,主要是老笔记本f1到f12这一排的键都不管用了。尴尬  详情 回复 发表于 2024-2-22 05:08

免费评分

参与人数 3吾爱币 +5 热心值 +1 收起 理由
oranges + 1 我很赞同!
朱朱你堕落了 + 3 + 1 大佬带我飞。
netspirit + 1 楼主这问题看得我也挺好奇的

查看全部评分

玩机小达人 发表于 2024-2-22 01:08
 楼主| 朱朱你堕落了 发表于 2024-2-22 05:08
爱飞的猫 发表于 2024-2-21 22:43
壳子加异常来烦你呗 烦到你不耐烦 最后放弃
然后就是可以混淆控制流。上一秒还在好好的执行代码,下一秒突 ...

手机打字真不方便,打了好多字,一个返回误操作,全没了,算了,另外问下,od菜单或哪个按钮也能实现键盘的shift+f9忽略异常运行?没发现有啊,主要是老笔记本f1到f12这一排的键都不管用了。尴尬
bing3076 发表于 2024-2-22 08:45
有点复杂,看不懂!
qq465881818 发表于 2024-2-22 12:05
出异常了说明没到壳,到壳了就不会有异常了,不然程序就没法运行了,这是最后一次异常法的底层逻辑。理解起来也很简单,解完壳 jmp到解壳位置开始执行,这是程序oep,因为解壳的长度会大一些,所以jmp要远些。运行到oep真正要执行的程序了,就没有异常了,最后一次异常法就是脱壳完之前的附近,也就是oep附近。

点评

大佬,发错了吧,应该是出现异常了说明还在壳代码内,没到程序oep ,到了就不会有异常了,不然程序就没法运行了。  详情 回复 发表于 2024-2-22 16:26

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
朱朱你堕落了 + 2 + 1 热心回复!

查看全部评分

huohua2088 发表于 2024-2-22 13:41
这问题确实有意义。
oranges 发表于 2024-2-22 14:53
爱飞的猫 发表于 2024-2-21 22:43
壳子加异常来烦你呗 烦到你不耐烦 最后放弃
然后就是可以混淆控制流。上一秒还在好好的执行代码,下一秒突 ...

学到了学到了,题主抛出的这一系列问题确实非常犀利,当我小白就在想这些方法是如何得出的,奈何只会用方法,今天才知道原来是这样。
 楼主| 朱朱你堕落了 发表于 2024-2-22 16:26
qq465881818 发表于 2024-2-22 12:05
出异常了说明没到壳,到壳了就不会有异常了,不然程序就没法运行了,这是最后一次异常法的底层逻辑。理解起 ...

大佬,发错了吧,应该是出现异常了说明还在壳代码内,没到程序oep ,到了就不会有异常了,不然程序就没法运行了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-4 05:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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