一、ASPack概述
ASPack是一种代码压缩工具,其可将PE文件进行压缩并加入解压部分,以方便在网络上传输和保护代码。
ASPack压缩后的文件大小通常可以缩小30%~70%,这极大地方便了软件的发布和传输。
ASPack脱壳是一种对加壳程序进行逆向分析的过程,我们通过该过程可以还原加密后的程序。
二、ASPack脱壳原理
ASPack脱壳的基本原理是,利用反汇编调试工具,寻找ASPack添加的代码,以及还原应用程序中的代码和数据。
ASPack在生成的压缩文件中,会添加部分代码,其中包括解压器,压缩算法等信息,这些信息可以通过反汇编工具查看。
利用反汇编工具还原原始程序需要对代码进行反汇编、分析、转换、重组等操作,可以通过手动脱壳或使用脱壳程序完成。
三、ASPack脱壳工具
ASPack脱壳工具分为手动脱壳和自动脱壳两种方式。
1、手动脱壳
手动脱壳是利用调试器反汇编、分析原始程序和去除ASPack添加信息的过程。
手动脱壳步骤如下:
1. 打开ASPack压缩文件,启动调试器; 2. 解压缩程序,找到ASPack的代码和挂起程序; 3. 列举程序运行状态,确定解压缩代码地址; 4. 通过调试器打开ASPack代码,查找解压代码; 5. 修改程序,去掉ASPack添加的执行代码; 6. 保存程序并测试。
2、自动脱壳
自动脱壳是利用编写的脱壳程序,通过分析ASPack添加信息并去除,以达到还原原始程序的过程。
常见的ASPack自动脱壳工具有如下。
1. UnASPack
UnASPack是一款免费的ASPack脱壳工具,其使用很简单,只需要打开要脱壳的ASPack程序,然后选择脱壳选项,选择保存路径即可。
使用 UnASPack 进行脱壳时,需要注意以下几点:
- 程序解压后,需要手动对其进行调试或反汇编操作。
- UnASPack 脱壳时需要根据不同的 PE 文件类型进行调整选项,才能够正确还原。
- 某些修改过 PE 格式的文件,可能无法被 UnASPack 处理。
2. ASPack Die
ASPack Die 是一款基于 OllyDBG 的插件,支持反编译和脱壳 ASPack 压缩的程序。
ASPack Die 可以实现自动脱壳,但对于某些复杂的程序需要进行手动调试。
四、ASPack反调试与反脱壳技术
ASPack为防止逆向分析,会对程序进行反调试和反脱壳处理。
1、反调试处理
ASPack反调试技术主要是通过以下方法实现:
- 检查系统调试器的存在
- 判断IDA等反汇编工具的存在
- 禁止程序被附加到进程中
2、反脱壳处理
ASPack反脱壳技术主要是通过以下方法实现:
- 隐藏程序解压缩代码
- 使用多种压缩算法
- 在代码中使用反反汇编技术,加大反向工程难度
五、小结
ASPack虽然可以简化软件的发布和传输,但同时也给软件加壳、脱壳过程增加了难度。通过本文的介绍,我们可以更好地了解ASPack及其脱壳过程,同时应该学会对抗ASPack反调试与反脱壳技术。在使用ASPack时应保持谨慎,以免给程序留下后门。