脱壳手记一(ASpack)
来源:互联网 发布:摩根士丹利 it 编辑:程序博客网 时间:2024/05/19 04:02
壳,作为一种保护种子的无生命介质,在自然界中无处不在。因而,从这个定义中,我们知晓壳在软件中有两个作用:一、壳保护软件内部程序;二、壳对于软件的完整性并无影响。种子发芽时会自动脱离壳生长。软件也一样,在运行时也是“离开”壳运行的。
在开始正题之前,稍微再扯扯壳的加载过程,一般加壳程序会在初始化时保存各寄存器的值,等外壳执行完毕再恢复这些寄存器的值,然后再跳到源程序的入口地址执行。另外,加壳时自己构造了一个输入表,并让PE头中的输入表指针指向此输入表,这样在程序运行的时候就会涉及到内存的写入和访问操作,这也是脱壳下断的理论依据。
目标软件:见截图
目标壳:ASPack 2.12 -> Alexey Solodovnikov
软件使用:Olldbg、peid0.94
首先,用peid查壳:
OD载入程序,停在
在这里有两种方法下断点,一种是根据堆栈平衡原理设断寻找OEP,另一种是对内存下访问断点。
在此,我们用第一种方法,下断 hr 0012FF6C ,按F9,程序断在
清除硬件断点,持续按F8,retn后,程序到达入口点:004B0A4C
DUMP脱壳,更改入口地址:
点击脱壳,用peid查看脱壳后文件:显示是Borland Delphi 6.0 - 7.0,可知脱壳成功。
反观上面的步骤,貌似太简单了点,其实以这个壳作为开篇手记,是想说,只要对一个壳有了基本的了解,那么在破解起来时会事半功倍。不然,在上述关键call进去时还得不断分析,几经辗转才能找到OEP。
所以说,加密跟解密是分不开的,只有深入了解了解密,才能更好的加密,反之亦然。很多人觉得破解是一种破坏,其实不然,只有破解的盛行,才会有加密的大唐盛世。
没有了威胁,我们将会懈怠。
(不扯废话了,到此为止。)
总的来说,aspack的壳一般不会对输入表进行破坏,所以在脱壳后也大致不需要对输入表进行修复。
写这个手记,一方面是为了娱乐,另一方面是巩固基础知识,梳理思路,寄希望于形成一个破解体系。另,也是有抛砖引玉之举,以此引出各大高人,望不吝赐教。
- 脱壳手记一(ASpack)
- 脱壳-ASPack 2.12
- aspack的简单脱壳,望大牛勿喷。
- 壳学习二:Aspack 2.12 加壳脱壳
- ASPack 2.x (without poly) -> Alexey Solodovnikov [Overlay] 手动脱壳
- 脱Aspack手动查找IAT完成脱壳修复
- 简单脱壳教程笔记(4)---手脱ASPACK壳
- 脱壳学习笔记(一)
- YACC 手记(一)
- JSF手记(一)
- linux手记(一)
- 工作手记(一)
- Logback手记(一)
- JavaScript手记(一)
- Logback手记(一)
- CSS手记(一)
- ES6手记(一)
- 菜鸟手记(一)
- NHibernate 在数据库有触发器时出错
- 使用make
- VC内存泄露检查工具:Visual Leak Detector
- C#委托和事件
- flex的datagrid内嵌ckeckbox控件(转来的)
- 脱壳手记一(ASpack)
- 揭秘开心网:创始人无专属办公室月薪9000
- mobile环境手机模拟器播放手机视频
- 在SQL中查看表所占的空间大小
- 程序员阿BEN的SOHO生活(转载)
- SAP ERP 与 Oracle ERP 比较
- ibatis - 自动代码生成工具abator 使用介绍
- abator使用后的几个注意点(ibatis自动生成工具)
- 在经济衰退的时期CRM的作用更明显