通常在软件的破解过程中,会遇到代码经过混淆器混淆的程序,此类混淆器可以称之为壳,壳又可分为压缩壳(常见的有UPX、北斗、ASDPack、Npack、PECompact等)和保护壳(如强壳Safengine、VMprotect、winlicense、Themida等),压缩壳作用是把程序进行体积缩小化处理,保护壳主要作用是混淆或加密代码防止他人进行逆向程序、破解程序。我们可以通过一些侦壳程序进行识别,但有些壳会采用伪装技术来混淆侦壳程序。
下面将使用多种不同的工具完成脱壳,先下载好这几个课件,我们马上开搞!
DIE查壳工具:https://files.cnblogs.com/files/LyShark/DiE_0.64.zip ImportREC:https://files.cnblogs.com/files/LyShark/ImportREC_1.7.zip LoadPE: https://files.cnblogs.com/files/LyShark/LoadPe.zip 加过壳的程序:https://files.cnblogs.com/files/LyShark/Zprotect.zip
1.老样子,OD载入程序,直接F9让程序跑起来。
2.看堆栈,找到SE处理程序的位置,右键选择反汇编窗口中跟随。
3.在反汇编窗口,右键选择,分析从模块中删除分析。
4.删除分析后,看堆栈发现有了小括号。
5.堆栈窗口向上拖,拖到断首,右键反汇编窗口中跟随。这一个不是OEP,第二个也不是。
6.直接看第三个红色的部分,拖到段首,发现SE处理程序,这个是OEP。
7.选择反汇编窗口中的OEP处,点击右键选择数据窗口中跟随-> 选择。然后在数据窗口处,下一个硬件执行断点。
8.重新载入程序,点击运行,让程序跑起来,会自动的断下。
9.