ASProtect脱壳技术详解

3星 · 超过75%的资源 需积分: 9 26 下载量 201 浏览量 更新于2024-10-07 收藏 38KB DOC 举报
"这篇文档详细介绍了如何手动对使用ASProtect壳的程序进行脱壳操作,主要涉及ASProtect的早期版本和具有StolenCode的情况。" ASProtect是一款知名的软件保护工具,它通过加密和混淆代码来防止未经授权的使用或逆向工程分析。然而,为了调试或分析受保护的程序,有时需要对其进行脱壳处理。以下是ASProtect脱壳的一些关键步骤和技巧: 1. **无StolenCode情况**: - 对于ASProtect 1.2/1.2c和1.23RC1等早期版本,通常可以忽略除内存访问异常外的所有异常,然后使用Shift+F9运行程序,直至最后一个异常发生。 - 在异常处理结束后,打开内存镜像并设置断点在00401000处,接着使用F9中断。这样通常能定位到原执行入口点(OEP)。 - 判断OEP的一个方法是观察堆栈中的硬盘指纹,当硬盘指纹不再出现时,前一个异常处理的位置可能就是OEP。 2. **有StolenCode情况**: - 对于ASProtect 1.23RC4至1.3.08.24版本,同样忽略非内存访问异常,但在第二次出现硬盘指纹时,设置断点在00401000,中断后找到保存注册名的move指令。 - 在最后一次异常后,找到第一个retn指令处设置断点,中断后检查堆栈。ASCII码的第二行地址(例如0012FF68)是关键。 - 使用命令行工具hr0012FF68F9运行并中断,取消硬件断点,F7跟进,F8单步,找到解壳区域的内存地址。 - 使用Lord-PE进行完整和区域脱壳。区域脱壳地址应包含找到的内存地址,然后在PE编辑器中加载完整脱壳的程序,修改区段的VA和名称。 - 重建PE结构后,利用AsprDBGr.exe找到OEP地址,并在REC修复过程中选择顶层进程,输入OEP,自动修复IAT。但不要立即抓取修复,而是将OEP地址更改为区域脱壳后的地址。 整个过程需要对内存分析、异常处理、反汇编和PE结构有深入理解。在脱壳过程中,可能会遇到各种复杂情况,如动态生成的代码、反调试技术等,因此需要灵活应对并具备一定的逆向工程技能。虽然这个过程繁琐,但了解这些技术对于软件安全研究和逆向分析至关重要。