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