脱壳手记一(ASpack)

来源:互联网 发布:摩根士丹利 it 编辑:程序博客网 时间:2024/05/19 04:02

壳,作为一种保护种子的无生命介质,在自然界中无处不在。因而,从这个定义中,我们知晓壳在软件中有两个作用:一、壳保护软件内部程序;二、壳对于软件的完整性并无影响。种子发芽时会自动脱离壳生长。软件也一样,在运行时也是“离开”壳运行的。

 

在开始正题之前,稍微再扯扯壳的加载过程,一般加壳程序会在初始化时保存各寄存器的值,等外壳执行完毕再恢复这些寄存器的值,然后再跳到源程序的入口地址执行。另外,加壳时自己构造了一个输入表,并让PE头中的输入表指针指向此输入表,这样在程序运行的时候就会涉及到内存的写入和访问操作,这也是脱壳下断的理论依据。

 

 

目标软件:见截图

 

 软件截图

 

 

目标壳:ASPack 2.12 -> Alexey Solodovnikov

软件使用:Olldbgpeid0.94

 

首先,用peid查壳:

peid查壳

 

 

 

OD载入程序,停在

 

  

在这里有两种方法下断点,一种是根据堆栈平衡原理设断寻找OEP,另一种是对内存下访问断点。

 

在此,我们用第一种方法,下断 hr 0012FF6C ,按F9,程序断在

 

清除硬件断点,持续按F8retn后,程序到达入口点:004B0A4C

 

DUMP脱壳,更改入口地址:

 

 dump

点击脱壳,用peid查看脱壳后文件:显示是Borland Delphi 6.0 - 7.0,可知脱壳成功。

 

反观上面的步骤,貌似太简单了点,其实以这个壳作为开篇手记,是想说,只要对一个壳有了基本的了解,那么在破解起来时会事半功倍。不然,在上述关键call进去时还得不断分析,几经辗转才能找到OEP

所以说,加密跟解密是分不开的,只有深入了解了解密,才能更好的加密,反之亦然。很多人觉得破解是一种破坏,其实不然,只有破解的盛行,才会有加密的大唐盛世。

没有了威胁,我们将会懈怠。

(不扯废话了,到此为止。)

总的来说,aspack的壳一般不会对输入表进行破坏,所以在脱壳后也大致不需要对输入表进行修复。

 

写这个手记,一方面是为了娱乐,另一方面是巩固基础知识,梳理思路,寄希望于形成一个破解体系。另,也是有抛砖引玉之举,以此引出各大高人,望不吝赐教。

原创粉丝点击