手把手教你把加壳软件脱壳

法律法规网 作者:小柯
来源 来源: 网络  法律法规网 时间: 2013-10-08 15:51:45  评论(/)

一般人拿到软件只管安装使用就好了,但是对于程序员来讲,他们拿到软件经常并非是要正常使用的,他们简介软件的目的是搞研究。看看别人的软件是怎么做的,然后吸取营养为自己所用。对于初学者来说,学习把加壳的软件脱壳就很重要了,如果这个技术都学不会,那么学习制作软件肯定就要走很多弯路了。

其实ASPack 2.12是比较简单的东西,可以说,很大程度上,它可以对程序的大小进行压缩,方便发布。今天从实际的例子来说说如何进行手脱ASPack 2.12 壳。当然,所谓的手脱,不是说完全靠手工, 我们还需要一定的工具,首先是PEiD,大家可以在脚本之家上简介到,主要用于查壳的一种小工具。

第二个就是动态调试工具OD(ollydbg),这个工具同样可以自己再网络上找到简介。
我们以一个ascii转换的小工具为例子。因为刚刚好是用aspack加的壳。所以我们就拿它开刀。

点击查看原图

上图是软件的界面,这个时候的软件大小是846 KB (866,816 字节)是不是感觉很小呢?我们用peid进行查看壳。

点击查看原图

可以清晰的看到是aspack的壳吧。而且还有版本,我们使用OD打开它。对于是否继续分析,我们点否就可以。然后我们就可以看到下面类似的代码。

点击查看原图

我们可以看到入口是停止了pushad,也就是寄存器压统一入栈操作。那么我们就可以轻松的使用所谓的ESP定律来搞定了。按一下F7,到下一行,看寄存器窗口。里面的ESP的值 。

点击查看原图

看到ESP寄存器是红*的了。我们copy对应的0012FFA4,到我们的命令行窗口下硬件断点。

硬件断点就是hr ,然后加上我们刚刚copy的地址,然后回车,这个时候我们可以再菜单的。调试》硬件断点 中看到我们设置的硬件断点了。

点击查看原图

设置好断点后,我们直接按F9运行程序,它会在断点处停下来。大致的位置看截图

点击查看原图

 

好,我们可以高兴的看到,发生了jnz,就是不等于0就跳转,而且是红*的方向向下跳转。红*代表跳转已经实现,方向是向下,就是到了地址为006AF3BA的地方,然后这个地 方push压入一个地址,通过retn方式返回。我们这个时候删除硬件断点。方法是调试》硬件断点 选择删除我们刚刚hr命令添加的硬件断点。然后我们按F7单步就到了push 这个压栈的地方。然后我们在 按两次F7单步执行。就到了

点击查看原图

看到这个地方,如果你调试比较多的话,一定明白这个就是入口了。首先你看地址,跳转跨度很大。说明壳的代码前面执行完成,现在跳转来执行真正的代码了。而且这个代码 是典型的vc的编译出现的汇编代码。在地址00422240的地方,我们选择右键,选择用ollydump脱壳调试进程。弹出如下的界面

 

点击查看原图

方式随便选择。我默认,我们直接点击脱壳按钮,然后取一个脱壳完成的exe名称就可以了。然后我们来查看是否脱壳成功,使用我们的peid进行查壳。具体效果如下图所示

点击查看原图

 

我们可以看到真正的语言了。和编译器的版本。然后我们再运行我们脱壳后的程序,如果正在运行就说明一切OK了。

当然如果无法运行我们就需要使用修复工具对脱壳后的程序就行修复操作,常用的修复工具是Impo人体 Fix 1.6。大家自己可以再网络上简介到。修复我就不说啦,因为这个脱壳后正常运行了。就没有必要修复了。我们再看一下程序的大小3.17 MB (3,331,584 字节)看到了吧,这个壳的压缩能力惊人 呀呵呵。所以总的来说这个壳可以定*为压缩壳而非加密壳。因为程序大小变小是它主要目的吧。

好了,废话一大堆,就笔记到这里吧。这个可以说是所有脱壳课程里面的最基础的东西,类似我们写c语言时候的hello world。但是麻雀虽小五脏俱全嘛。只要努力你一定可以 成为大牛。

tags:

站长推荐 / Recommend

最近更新 / Latest

站长推荐:

网站首页 关于我们 友情链接 广告服务 联系我们 网站地图 免责声明 WAP
Powered by LC123.NET 8.5  © 2009-2015
本站常年法律顾问 王正兴 律师