| 
注册时间2006-9-10
阅读权限20
最后登录1970-1-1UID21039 以武会友  
 
 TA的每日心情|  | 奋斗 2023-12-2 20:17
 | 
|---|
 签到天数: 3 天 [LV.2]偶尔看看I | 
 
| 【文章标题】: ASProtect 1.2 / 1.2c主程序脱壳 【文章作者】: 追杀
 【作者邮箱】: [email protected]
 【作者主页】: 没有
 【作者QQ号】: 46345049
 【软件名称】: ASProtect
 【软件大小】: 288 KB
 【下载地址】: http://www.pediy.com/tools/PACK/ ... ect/asprotect12.zip
 【加壳方式】: ASProtect1.2
 【保护方式】: 加密
 【编写语言】: Bor
 【使用工具】: OD LordPE ImportREC
 【操作平台】: WinXp2
 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
 --------------------------------------------------------------------------------
 【详细过程】
 设置OD 设置:忽略除了内存访问的所有异常
 OD载入停在这里:
 00401000 >  68 01F04800     PUSH ASProtec.0048F001
 00401005    C3              RETN
 
 Shift+F9: 第一次异常
 00DD009D    3100            XOR DWORD PTR DS:[EAX],EAX
 00DD009F    EB 01           JMP SHORT 00DD00A2
 
 Shift+F9: 第二次异常
 00DCFCF8    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCFCFA    EB 01           JMP SHORT 00DCFCFD
 00DCFCFC    68 648F0500     PUSH 58F64
 
 Shift+F9: 第三次异常
 00DCFD3B    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCFD3D    64:8F05 0000000>POP DWORD PTR FS:[0]
 00DCFD44    58              POP EAX
 00DCFD45    E8 4E29FFFF     CALL 00DC2698
 
 
 Shift+F9: 第四次异常
 00DCED49    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCED4B    EB 01           JMP SHORT 00DCED4E
 00DCED4D    68 648F0500     PUSH 58F64
 
 Shift+F9: 第五次异常
 00DCEDB1    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCEDB3    EB 01           JMP SHORT 00DCEDB6
 00DCEDB5    68 648F0500     PUSH 58F64
 
 Shift+F9: 第六次异常
 00DCEE43    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCEE45    EB 01           JMP SHORT 00DCEE48
 00DCEE47    68 648F0500     PUSH 58F64
 
 Shift+F9: 第七次异常
 00DCEEB1    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCEEB3    EB 01           JMP SHORT 00DCEEB6
 00DCEEB5    68 648F0500     PUSH 58F64
 
 Shift+F9: 第八次异常
 00DCEF22    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCEF24    EB 01           JMP SHORT 00DCEF27
 00DCEF26    68 648F0500     PUSH 58F64
 
 Shift+F9: 第九次异常
 00DCFEB6    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCFEB8    EB 01           JMP SHORT 00DCFEBB
 00DCFEBA    68 648F0500     PUSH 58F64
 
 Shift+F9: 第十次异常
 00DCEB3F    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCEB41    EB 01           JMP SHORT 00DCEB44
 00DCEB43    68 648F0500     PUSH 58F64
 Shift+F9: 第十七次异常
 00DD0260    3100            XOR DWORD PTR DS:[EAX],EAX
 00DD0262    EB 01           JMP SHORT 00DD0265
 00DD0264    68 648F0500     PUSH 58F64
 堆栈里:
 0012D738   0012D740  指向下一个 SEH 记录的指针
 0012D73C   00DD0217  SE 处理器
 0012D740   0012FFE0  指向下一个 SEH 记录的指针
 0012D744   00DD0A6F  SE 处理器
 0012D748   0012FF90
 0012D74C   00DC0000
 0012D750   00DA0000
 0012D754   00DD0038
 0012D758   00000000
 0012D75C   00DE1C44  ASCII "G44ozAAQ6n0=" (硬盘指纹)
 
 
 
 
 Shift+F9: 最后一次异常:
 00DD0A2B    3100            XOR DWORD PTR DS:[EAX],EAX
 00DD0A2D    EB 01           JMP SHORT 00DD0A30
 00DD0A2F    68 648F0500     PUSH 58F64
 
 此时打开内存竞相
 
 
 Memory map, 项目 23
 地址=00401000         F2下断
 大小=00059000 (364544.)
 属主=ASProtec 00400000
 区段=
 包含=代码
 类型=映像 01001002
 访问=R
 初始访问=RWE
 
 F2下断后,SHIFT+F9
 别以为就到OEP了还没有
 还有一次异常
 00DCFC2A    3100            XOR DWORD PTR DS:[EAX],EAX
 00DCFC2C    64:8F05 0000000>POP DWORD PTR FS:[0]
 00DCFC33    58              POP EAX
 那就再一次SHIFT+F9
 00DE7A8A    FF02            INC DWORD PTR DS:[EDX]
 00DE7A8C  ^ EB E8           JMP SHORT 00DE7A76
 
 再一次SHIFT+F9
 
 OEP出来了
 00458FD8    55              PUSH EBP
 00458FD9    8BEC            MOV EBP,ESP
 00458FDB    83C4 F4         ADD ESP,-0C
 00458FDE    E8 99A3FAFF     CALL ASProtec.0040337C
 00458FE3    E8 F0B8FAFF     CALL ASProtec.004048D8
 00458FE8    E8 23FAFAFF     CALL ASProtec.00408A10
 00458FED    E8 9667FBFF     CALL ASProtec.0040F788
 00458FF2    E8 AD6BFBFF     CALL ASProtec.0040FBA4
 00458FF7    E8 048BFBFF     CALL ASProtec.00411B00
 00458FFC    E8 7F03FCFF     CALL ASProtec.00419380
 00459001    E8 AAD4FCFF     CALL ASProtec.004264B0
 00459006    E8 5556FDFF     CALL ASProtec.0042E660
 0045900B    E8 4074FDFF     CALL ASProtec.00430450
 00459010    E8 4706FEFF     CALL ASProtec.0043965C
 00459015    E8 32C1FEFF     CALL ASProtec.0044514C
 0045901A    E8 21C8FEFF     CALL ASProtec.00445840
 0045901F    E8 0440FFFF     CALL ASProtec.0044D028
 00459024    E8 4340FFFF     CALL ASProtec.0044D06C
 00459029    E8 EE40FFFF     CALL ASProtec.0044D11C
 0045902E    E8 8942FFFF     CALL ASProtec.0044D2BC
 00459033    E8 7C55FFFF     CALL ASProtec.0044E5B4
 00459038    E8 5F61FFFF     CALL ASProtec.0044F19C
 0045903D    A1 28564600     MOV EAX,DWORD PTR DS:[465628]
 00459042    E8 D1CAFCFF     CALL ASProtec.00425B18
 
 LordPE脱壳
 
 ImportREC修复
 
 OE P:58FD8
 RA V:00066114
 SIZE:000005CC
 无效指针:260个用反跟踪级别 1 级修复
 还有一个:用ASProtect插件修复
 抓取脱壳文件
 
 当运行修复后的文件是,出现一个对话框,提示:
 Access violation at address 00DCC6D8. Read of address OODCC6D8.
 结束进程。
 
 需要修复
 之前这个OD不要关掉了
 现在掉出错地方修复
 F9运行,在堆栈里看到CALL 出错的地址,我们跟进去
 0045495F  |.  FF15 AC4F4600 CALL DWORD PTR DS:[464FAC] 这个call向原来未脱壳的壳地址
 我们到未脱壳的OD里找到这个地址。看看它跑哪里去
 0045495F    FF15 AC4F4600   CALL DWORD PTR DS:[464FAC] 来到这里Enter进去看看
 好RETN这个东西,回到脱壳后的OD上来。我们在这里找一个返回(RETN)到内存地址跟随
 修改保存一下。再重新载入,使用同样步骤操作。
 修复成功运行
 
 拜拜,我是追杀
 --------------------------------------------------------------------------------
 【版权声明】: 本文原创于PYG技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
 
 2007年10月13日 21:12:24
 
 [ 本帖最后由 enjon 于 2007-10-14 13:33 编辑 ]
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?加入我们 
  评分
查看全部评分
 |