/简体中文 /
/简体 /
/简体中文 /
/简体中文 /
/简体中文 /
/简体中文 /
ASPack脱壳工具是一款非常专业的程序压缩软件,体积小,绿色安全。它可以支持压缩软件中的可执行程序,大大减少了整个程序占用计算机的运行内存,保证压缩后的程序不会出现不可用的问题,非常方便。
- 可以明显地减少可执行文件的大小,一般来说可以减少40%-70%。
- 降低网络应用的时间,以及从网络上下载的时间。
- 嵌入Windows的应用程序需要一个更小的空间。
- 保护资源和防止代码被剽窃,分解分析和反编译。
- 发行被压缩程序无执行时间上的延迟。
- 与微软的可执行软件如Visual C++, Visual Basic, Inprise (Borland) Delphi and C++ Builder, 和其他的Win32 编译器等相兼容。
1、其实ASPack是比较简单的东西,可以说,很大程度上,它可以对程序的大小进行压缩,方便发布。今天从实际的例子来说说如何进行手脱。当然,所谓的手脱,不是说完全靠手工, 我们还需要一定的工具,首先是PEiD,大家可以在起点软件园上下载到,主要用于查壳的一种小工具。
第二个就是动态调试工具OD(ollydbg),这个工具同样可以在起点软件园找到下载。
我们以一个ascii转换的小工具为例子。因为刚刚好是用aspack加的壳。所以我们就拿它开刀。
2、上图是软件的界面,这个时候的软件大小是846 KB (866,816 字节)是不是感觉很小呢?我们用peid进行查看壳。
3、可以清晰的看到是aspack的壳吧。而且还有版本,我们使用OD打开它。对于是否继续分析,我们点否就可以。然后我们就可以看到下面类似的代码。
4、我们可以看到入口是停止了pushad,也就是寄存器压统一入栈操作。那么我们就可以轻松的使用所谓的ESP定律来搞定了。按一下F7,到下一行,看寄存器窗口。里面的ESP的值 。
5、看到ESP寄存器是红色的了。我们copy对应的0012FFA4,到我们的命令行窗口下硬件断点。
硬件断点就是hr ,然后加上我们刚刚copy的地址,然后回车,这个时候我们可以再菜单的。调试》硬件断点 中看到我们设置的硬件断点了。
6、设置好断点后,我们直接按F9运行程序,它会在断点处停下来。大致的位置看截图
7、好,我们可以高兴的看到,发生了jnz,就是不等于0就跳转,而且是红色的方向向下跳转。红色代表跳转已经实现,方向是向下,就是到了地址为006AF3BA的地方,然后这个地 方push压入一个地址,通过retn方式返回。我们这个时候删除硬件断点。方法是调试》硬件断点 选择删除我们刚刚hr命令添加的硬件断点。然后我们按F7单步就到了push 这个压栈的地方。然后我们在 按两次F7单步执行。就到了
8、看到这个地方,如果你调试比较多的话,一定明白这个就是入口了。首先你看地址,跳转跨度很大。说明壳的代码前面执行完成,现在跳转来执行真正的代码了。而且这个代码 是典型的vc的编译出现的汇编代码。在地址00422240的地方,我们选择右键,选择用ollydump脱壳调试进程。弹出如下的界面
9、方式随便选择。我默认,我们直接点击脱壳按钮,然后取一个脱壳完成的exe名称就可以了。然后我们来查看是否脱壳成功,使用我们的peid进行查壳。具体效果如下图所示
我们可以看到真正的语言了。和编译器的版本。然后我们再运行我们脱壳后的程序,如果正在运行就说明一切OK了。