pecompact是一款好用的脱壳软件,软件可以通过压缩代码、数据和相关资源使压缩能达到100%,压缩率极高,压缩后的程序无需解压即可运行,支持编码、解码、发布和GPA插件,并且包含易于修改的简短示例。需要的朋友可以下载!
软件特点
1、该软件设计得非常实用。通过简单的容量控制,来设置压缩级别,然后选择要压缩的程序类型。如图5-5所示,高级配置项目包含明细菜单,提供了很多选项:压缩优化的设置,是否优化文件中解压缩程序的大小或速度,要压缩哪些资源,及其他设置。在文档资料中,您可以找到关于这些设置的详细说明。
2、PECompact的菜单要比其他压缩程序的菜单稍大些PECompact的另一个卓越功能是可以使用插件。它支持编码、解码、发布和GPA插件,并且包含易于修改的简短示例。例如,发布插件在程序开始处添加消息,适用于创建者的共享件。
3、不过,该程序也有不足之处: PECompact易于删除。在文档资料中,开发人员称:该程序将复杂化调试。但这并不确切,在该程序中,找不到反调试策略,这意味着,它并非难于调试。在其他方面,PECompact是最优秀的压缩程序之一。如需高压缩率,且不关心压缩程序被轻易解除,那么,PECompact是一个极好的选择。
4、整个程序在汇编程序中编写完成,压缩时使用了两个压缩库:第一个是aPLiB,它是最佳的压缩算法之一;第二个是JCALG1,由Jeremy Collake编写,与aPLiB不同,它是开放源代码,可免费使用。
5、令人惊奇的是,如果使用最大压缩,JCALG1的性能甚至优于aPLiB(不过,压缩时间较长)。在加载压缩文件时,两个库所用的时间相同。
pecompact使用教程
一丶OD打开分析
1.OD分析
发现,首先给eax赋值,然后压栈eax,那么eax肯定会访问,那么我们F8到push eax的下面,也就是4022EA的位置
2.查看栈数据
查看栈数据.
那么在栈位置12FFC0的位置,肯定会有访问,我们数据窗口 定位到ESP的位置,也就是0012FFC0
3.在数据窗口定位栈顶位置.
CTRL + G命令定位.
由于方便一起截图,事先已经定位过来了.
4.针对栈内容下硬件访问断点(4个字节)
选中栈中地址的值,也就是 push 的eax的值,下硬件访问断点
5.F9运行起来,直到跟到我们的模块分析
第一次F9
依次类推,下方肯定会跳转到我们的程序里面.
一直找到一个跳转到eax的位置
此时EAX的值是 004022E4
而JMP的位置是0040AC1E
由此可以判断出,入口点的位置是4022E4
为什么?
因为壳一般加密之后,如果跳转到入口点,那么它是一个远跳
此时看JMP的地址,和跳的位置就是一个远跳.
6.F7跟入JMP eax
此时如果F7跟进来了,那么就是下面的样子
真正的入口点
8.使用OD插件,Dump内存,脱壳.
此时我们可以使用OD插件的dump内存的插件,在入口点位置脱壳了.
弹出界面:
点击脱壳,选择位置,存储你脱壳后的文件.
此时OD不要关闭.
9.使用导入表修复工具,修复脱壳后的IAT表
(关于IAT表请熟悉PE格式后看)
此时OD调试的进程不要关闭,也就是带壳的inc2l程序,如果关闭了,那么重新进行上面几步,只需到定位到入口点即可.
现在脱壳完毕,IAT表肯定让壳给抹掉了,而OD的dump工具修复的IAT表也不全,所以使用一个IAT表格修复工具修复.
我用的工具是 ImportREC1.7 具体下载可以去下载看雪大礼包.
(当然我会上传,但是此工具比较老,会有Bug,一会修复完之后手工修复即可.)
9.1打开工具.并选择我们OD挂起的未脱壳的inc2l的程序.
9.2 OEP位置给我们的OPE的偏移
OEP位置给我们的OEP的偏移,或者让它自动查找.
然后点击Get Imports
9.3 点击 Fix Dump 给我们脱壳的程序修复
现在导入表已经有了,那么点击Fix Dump给我们刚才脱壳后的程序修复一下.
9.4运行我们的脱壳程序查看是否可以运行.
提示错误,Winhex打开,查看PE格式.
首先,我们发现我们的导入表,被我们的导入表修复工具加了一个新的节, 也就是mackt的节
那么我们此时我们首先定位 sizeofHead (DOS头+ NT头 + 节表的总大小)我们看下是多少.
有没有自动给我们增加.
并没有增加,大小还是200,那么是错的,因为加了一个分页
也就是mackt的位置的大小并没有加上,也不是说没有加上,而是正好在200的位置处,也就是文件中1F0的位置.
那么这个程序出BUG了,此时我们改为1000 或者你自己看下多大.
保存文件,重新打开我们的壳程序试一下还会崩溃吗.
为了方便,拷贝到住电脑上,然后命令行打开查看.
成功运行,因为这个程序点开会一闪而过,所以截图不了,所以命令行打开,出来这个界面就成功了.