ACProtect V1.09脱壳与AntiDump修复分析

需积分: 0 1 下载量 173 浏览量 更新于2024-07-01 收藏 526KB PDF 举报
"本章节主要讲述如何对使用ACProtect V1.09保护的程序进行脱壳处理,重点是修复AntiDump机制并成功dump出原始未打包的可执行文件。在前一章节中,已经讨论了如何定位stolen bytes和修复IAT(Import Address Table)。" 在对使用ACProtect V1.09保护的程序进行脱壳时,首先要完成IAT的修复工作。这通常涉及使用自编写的脚本来定位OEP(Original Entry Point)并恢复被篡改的导入表。在本案例中,作者使用了一个名为OEP.txt的脚本来实现这一目标。然后,在OllyDbg(OD)调试器中,设置断点在KiUserExceptionDispatcher入口和ZwContinue调用处,以确保在到达OEP时能捕获到程序的行为。 在到达OEP后,下一步是进行dump操作。在这个过程中,不选择重建导入表(Rebuild Import)的选项,并将导出的文件重命名为dumped.exe。然而,当使用ImportReconstructor工具尝试重建导入表时,发现有一个IAT项被标记为无效。为了找出问题所在,作者决定跟踪这个无效的IAT项。 通过设置内存写入断点,发现异常发生在对IAT项460DE8的写入操作上。进一步分析发现,ESP-0C指向的栈空间中没有保存API函数的入口地址,而是46E5CB的值。对比脚本和不使用脚本时460DE8的值,发现在两种情况下,460DE8的值分别为46E5CB和46BD5B。通过对46BD5B地址的分析,发现了一段异或操作,其结果也是46E5CB。 这个发现表明,问题可能并不在于修复IAT的脚本,而是程序的其他部分在动态计算API函数入口地址时出现了问题。为了进一步定位问题,作者建议随机选择一个API函数进行跟踪,以查看程序在执行过程中的行为。 这个章节涉及了逆向工程的关键技术,包括调试器的使用、IAT修复、dump操作、以及通过跟踪和分析代码来理解程序的动态行为。这些技能对于理解程序保护机制和反调试技术至关重要,也是逆向工程师在应对复杂恶意软件时的必备工具。在实际工作中,面对类似的问题,需要有耐心地逐步调试和分析,才能找到解决问题的关键。