甲壳虫脱壳教程笔记七(脱加密壳)
2011-03-02 09:52
381 查看
一.如何分辨加密壳:
壳分为加密壳和压缩壳,压缩壳目的是减少软件的体积便于在网上传播,而加密壳目的是防止软件被脱壳和破解,所以加密壳全部有反跟踪代码
,会有许多SEH陷阱使OD调试时产生异常.也就是说在跟踪过程中很容易导致程序运行,使你无法跟踪分析.而压缩壳相对比较容易,脱壳也比较简单,一般没异常出现.
二.脱加密壳的相关知识要点:
在加密壳中,变形CALL比较多,遇到变形call要F7代过,区别是否是变形Jmp的一个简单方法是比较call的目标地址和当前地址,如果两者离的很近,一般就是变形Jmp了,用F7走。对于Call的距离很远,可以放心用F8步过.加密壳中F7用的比较多,压缩壳中一般用F8单步跟踪就可以搞定. //脱壳前了解壳是加密壳,还是压缩壳,具体使用F7,还是F8。
脱加密壳,用OD载入,钩掉所有异常(不忽略任何异常,除了忽略在KERNEL32 中的内存访问异常打勾.数着用了多少次Shift+F9程序运行,显然最后一次异常后,程序会从壳跳到OEP开始执行,这就是我们寻找OEP的一个关键,如果程序 Shift+F9后直接退出,很明显加密壳检测调试器,最简单的应付方法就是用OD插件隐藏OD.
单步异常是防止我们一步步跟踪程序,这一系列的异常虽然干扰我们调试,但也给我们指明了一条通路,就是Shift+F9略过所有异常,然后找到最后一处异常,再它的恢复异常处下断点,跟踪到脱壳入口点.
三.加密壳的一般脱壳步骤:
介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.
第一步:用OD打开程序,点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序.
第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.
第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.
第四步:此时观察OD的右下角有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的数值!来到这个地址.
第五步:在这里,按F2下断点!然后按SHIFT+F9来到断点处!
第六步:这时候我们已经跳过了所有异常,然后去掉断点,按F8慢慢向下跟踪很快就到达OEP了.
第七步:修复----重建PE
壳分为加密壳和压缩壳,压缩壳目的是减少软件的体积便于在网上传播,而加密壳目的是防止软件被脱壳和破解,所以加密壳全部有反跟踪代码
,会有许多SEH陷阱使OD调试时产生异常.也就是说在跟踪过程中很容易导致程序运行,使你无法跟踪分析.而压缩壳相对比较容易,脱壳也比较简单,一般没异常出现.
二.脱加密壳的相关知识要点:
在加密壳中,变形CALL比较多,遇到变形call要F7代过,区别是否是变形Jmp的一个简单方法是比较call的目标地址和当前地址,如果两者离的很近,一般就是变形Jmp了,用F7走。对于Call的距离很远,可以放心用F8步过.加密壳中F7用的比较多,压缩壳中一般用F8单步跟踪就可以搞定. //脱壳前了解壳是加密壳,还是压缩壳,具体使用F7,还是F8。
脱加密壳,用OD载入,钩掉所有异常(不忽略任何异常,除了忽略在KERNEL32 中的内存访问异常打勾.数着用了多少次Shift+F9程序运行,显然最后一次异常后,程序会从壳跳到OEP开始执行,这就是我们寻找OEP的一个关键,如果程序 Shift+F9后直接退出,很明显加密壳检测调试器,最简单的应付方法就是用OD插件隐藏OD.
单步异常是防止我们一步步跟踪程序,这一系列的异常虽然干扰我们调试,但也给我们指明了一条通路,就是Shift+F9略过所有异常,然后找到最后一处异常,再它的恢复异常处下断点,跟踪到脱壳入口点.
三.加密壳的一般脱壳步骤:
介绍:这种方法一般用于加密壳,这是脱加密壳的一种通用方法.
第一步:用OD打开程序,点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序.
第二步:接着我们按SHIFT+F9,直到程序运行,记下从开始按SHIFT+F9到程序运行的次数n.
第三步:重载程序,再按SHIFT+F9,这次按的次数为上次让程序运行时的次数的n-1次.
第四步:此时观察OD的右下角有一个"SE 句柄",这时我们按CTRL+G,输入SE 句柄前的数值!来到这个地址.
第五步:在这里,按F2下断点!然后按SHIFT+F9来到断点处!
第六步:这时候我们已经跳过了所有异常,然后去掉断点,按F8慢慢向下跟踪很快就到达OEP了.
第七步:修复----重建PE
相关文章推荐
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
- 简单脱壳教程笔记(6)---手脱FSG壳
- 简单脱壳教程笔记(8)---手脱EZIP壳
- 简单脱壳教程笔记(11) --- 脱WinUpack加的壳
- 简单脱壳教程笔记(3)---手脱UPX壳(2)
- 简单脱壳教程笔记(4)---手脱ASPACK壳
- 简单脱壳教程笔记(7)---手脱PECompact2.X壳
- 简单脱壳教程笔记(10) --- 手脱EXE32PACK壳
- 简单脱壳教程笔记(9) --- 手脱TELock0.98b1壳
- AngularJS博友的笔记教程
- 黑客学习笔记教程之二:黑客常用攻击手段
- UFLDL 教程学习笔记(二)反向传导算法
- 视频加密一机一码教程 怎么给视频文件添加一机一码加密
- 寒冰linux视频教程笔记2 基础操作
- 222_尚学堂_高淇_java300集最全视频教程_JVM核心机制_深入类加载器_自定加密解密类加载器
- Base64加密---加密学习笔记(一)
- Unix/Linux编程实践教程 笔记8 进程和程序:编写命令解释器sh
- 【加密教程】:加密教程五之feistel算法加密
- tensorflow教程 cifar10 笔记