外壳初始化的现场环境(各寄存器值)与原程序的现场环境是相同的。加壳程序初始化时保存各寄存器的值,外壳执行完毕,会恢复各寄存器内容。其代码形式一般如下:
PUSHFD ;将标志寄存器入栈保存
PUSHAD ;pusheax,ecx,edx,ebx,esp,ebp,esi,edi
…… ;外壳代码部分
POPAD ;popedi,esi,ebp,esp,ebx,edx,ecx,eax
POPFD ;恢复标志寄存器
JMPOEP ; 跨段转移指令到OEP
OEP:…… ;解压后的程序原代码
1、常见脱壳知识:
pushfd╲
(入栈)代表程序的入口点的数据
pushad╱
popad╲
(出栈)代表程序的出口点的数据或者是PUSH PUSHAD这样
popfd╱
或者
PUSHAD (压栈) 代表程序入口点
POPAD (出栈) 代表程序出口点
出现出栈后一般经过RETN或者JMP等指令,发生跨断跳跃一般就到了OEP了(*^__^*) 嘻嘻……
2、找OEP:
程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP),只要我们找到程序真正的OEP,就可以立刻脱壳。当然也有其他的,如 je OEP等等,一般都是段之间的大跳转,OD的反汇编窗口里都是同一个段的内容,所以更好区别是否是段间跳转。 找OEP时注意两点。
1单步往前走,不要回头。
2观察。注意poshad、poshfd,popad、popfd等,和外壳代码处对应,注意地址发生大的变化。单步跟踪什 么时候F8走,F7,F4步过?这里我说说关于F8(Step Over)和F7(Step in)的一般方法,粗跟的时候一般都是常用F8走,但是有些call是变形的Jmp,此时就需要F7代过,区别是否是变形Jmp的一个简单方法是比较call的目标地址和当前地址,如果两者离的很近,一般就是变形Jmp了,用F7走。对于Call的距离很远,可以放心用F8步过,如果你再用F7步过,只是浪费时间而已。F8步过对压缩壳用的很多,F7步过加密壳用的很多,如果用F8一不小心就跑飞(程序运行),跟踪失败。
(PS:OEP是OriginalEntryPoint缩写,即程序加壳前的真正的入口点)
3、加密壳VS压缩壳:
加壳软件按照其加壳目的和作用,可分为两类:
1、是压缩(Packers);
2、是保护(Protectors);
压缩这类壳主要目的是减小程序体积,如ASPacK、UPX和PECompact等。另一类是保护程序,用上了各种反跟踪技术保护程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素,如ASProtect、Armadillo、EXECryptor等。随着加壳技术的发展,这两类软件之间的界线越来越模糊,很多加壳软件除具有较强的压缩性能,同时也有了较强的保护性能。
如何分辨加密壳压缩缩壳,通用特点,Od载入时有入口警告或询问是压缩程序吗?普通压缩壳Od调试时候没有异常加密壳全部有反跟踪代码,会有许多SEH陷阱使OD调试时产生异常。所以调试的时候需要注意!
4、加密壳找OEP
对于加密壳,我的方法一般是用最后一次异常法~
OD载入,钩掉所有异常(不忽略任何异常,除了忽略在KERNEL32 中的内存访问异常打勾。有时由于异常过多可以适当忽略一些异常),运行,数着用了多少次Shift+F9程序运行,显然最后一次异常后,程序会从壳跳到OEP开始执行,这就是我们寻找OEP的一个关键,如果程序Shift+F9后直接退出,很明显加密壳检测调试器,最简单的应付方法就是用插件隐藏。
单步异常是防止我们一步步跟踪程序,即F8,F7,F4等,Int3中断是检测调试器用的,仅在Win9x系统中有效,2000/XP就会出现断点异常,其它的异常主要是干扰调试。这一系列的异常虽然干扰我们调试,但也给我们指明了一条通路,就是Shift+F9略过所有异常,然后找到最后一处异常,再它的恢复异常处下断点,跟踪到脱壳入口点。确定从所有SEH异常中走出来,如果前面有大量循环,逐段解压。
当然你也可以用另一个好东西--Trace,在Command里来个tc eip<42b000 (42b000是当前段的起始位置,滚动条拖到最上面就能看到了,一般程序编译的基地址为400000),42b000只是例子,如果你的下模拟跟踪时机很准,确定没有Seh异常,稍等一会我们就会停在OEP处(对特别加密壳需要大量时间跟踪,因为它的循环极多,但比手动跟踪快,大部分时候是的。)详细跟踪情况可以点运行跟踪看OD跟踪记录。
分享到:
相关推荐
零基础脱壳破解第一课,大家一起学习脱壳,不再被骗子欺骗。。
脱壳经验谈之二本系列的目的在于教会大家一些脱壳的基础知识,分享个人的心得体会。 本篇不同于第一篇,内容相对少但是详细,力争把每个知识点讲清楚。我希望你能都看完,认真看!
第二章 破解软件的基础 第三章 破解windows 95软件的方法 第四章 特例分析的方法 提高篇(1) 提高篇(2) 提高篇(3) 提高篇(4) 提高篇(5) coolfly教程 破解入门第一集 破解入门第二集 破解入门第三集 破解...
加密与解密》随书光盘(二)工具 本书在第一版的基础上,更新了第一版中的过时内容。 本书共分三个部分。 第一部分介绍与加密和解密技术相关的基础知识。 第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态...
第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,系列号,警告窗口,时间限制,加密算法MD5、SHA、RSA等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳、补丁...
第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,系列号,警告窗口,时间限制,加密算法MD5、SHA、RSA等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳、补丁...
第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,系列号,警告窗口,时间限制,加密算法MD5、SHA、RSA等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳、补丁...
中文名: 加密与解密 第二版资源格式: 光盘镜像版本: 附配套光盘发行时间: 2003年地区: 大陆简介: 作者: 段钢编 译者: 书号: 7-5053-8648-4 页码: 519 开本: 16开 版次:1-1 丛书名: 出版社: 电子工业出版社 ...
第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,序列号,警告窗口,时间限制,加密算法MD5、SHA、RSA、EIGamal等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳...
本书全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式,从基本的跟踪调试到深层的拆解脱壳,从浅显的注册码分析到商用软件保护,几乎囊括了Windows下的软件保护的绝大多数内容。...
本书全面讲述了Windows平台下的最新软件加密与解密技术及相关解决方案,采用循序渐进的方式,从基本的跟踪调试到深层的拆解脱壳,从浅显的注册码分析到商用软件保护,几乎囊括了Windows下的软件保护的绝大多数内容。...
第1章 基础知识 第2章 代码分析技术第3章 静态分析技术第4章 动态分析技术第5章 软件保护技术及其弱点第6章 加密算法第7章 反编译语言第8章 PE文件格式第9章 增加PE文件功能第10章 反跟踪技术第11章 加壳与脱壳第12...
第1章 基础知识 第2章 代码分析技术第3章 静态分析技术第4章 动态分析技术第5章 软件保护技术及其弱点第6章 加密算法第7章 反编译语言第8章 PE文件格式第9章 增加PE文件功能第10章 反跟踪技术第11章 加壳与脱壳第12...
中文名: 加密与解密 第二版资源格式: 光盘镜像版本: 附配套光盘发行时间: 2003年地区: 大陆简介: 作者: 段钢编 译者: 书号: 7-5053-8648-4 页码: 519 开本: 16开 版次:1-1 丛书名: 出版社: 电子工业出版社 ...
中文名: 加密与解密 第二版资源格式: 光盘镜像版本: 附配套光盘发行时间: 2003年地区: 大陆简介: 作者: 段钢编 译者: 书号: 7-5053-8648-4 页码: 519 开本: 16开 版次:1-1 丛书名: 出版社: 电子工业出版社 ...
中文名: 加密与解密 第二版资源格式: 光盘镜像版本: 附配套光盘发行时间: 2003年地区: 大陆简介: 作者: 段钢编 译者: 书号: 7-5053-8648-4 页码: 519 开本: 16开 版次:1-1 丛书名: 出版社: 电子工业出版社 ...
Android安全应用逆向: 使用IDA Pro进行脱壳 Android安全应用逆向: 加密算法基础 Android安全Hook: Hook技术简介 Android安全Hook: Xposed源码分析(一) Android安全Hook: Xposed源码分析(二) Android安全Hook: ...
在掌握了上述标准和非标的技术后再对字典技术进行全面了解,自此,基础知识才算扎实,再去弄什么脱壳、自校验才有意义。 有关工具方面,针对最常用对工具进行了分类归纳,因此可能会出现文章重复:比如有关VL的...
第二部分全面讲述各种最新的软件加密与解密技术及方法,如静态分析技术,动态分析技术,序列号,警告窗口,时间限制,加密算法MD5、SHA、RSA、ElGamal等。第三部分主要介绍PE文件的知识,如增加文件功能、加壳与脱壳...
shark恒破解教程两季大全共20集,最全最强大的脱壳破解教程 此教程为电子书版