【文章标题】: ExeCryptor_gclgj脱壳笔记
【文章作者】: machengli
【软件名称】: 神机妙算钢筋 v8.7
【软件大小】: 1.87M
【下载地址】: http://www.0wei.com/viewthread.php?tid=7306&extra=page%3D1
【加壳方式】: ExeCryptor
【保护方式】: 壳保护
【编写语言】: Borland Delphi
【使用工具】: Ollydbg_EXEC、ImportREC、PETools
【操作平台】: winxp sp2
【软件介绍】: 一个过时的v8.7版本,现在已经是 v9.0。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  
  下了一个神机妙算钢筋 v9.0,试脱成功,怕违犯论坛规矩就不打算发表了。
  从清理硬盘的垃圾中看到这个软件的一个老版本v8.7,作为一个菜鸟练手的软件我想可以吧。
  如与论坛规定有违,请删除之。
  
  设置忽略所有异常,事件停在系统断点。
  
  ---系统断点---
  7C921231    C3              RETN                                     ; 系统断点。
  7C921232    8BFF            MOV EDI,EDI
  7C921234    90              NOP
  7C921235    90              NOP
  7C921236    90              NOP
  7C921237    90              NOP
  7C921238    90              NOP
  7C921239 >  CC              INT3
  7C92123A    C3              RETN
  7C92123B    90              NOP
  7C92123C    8BFF            MOV EDI,EDI
  ====================================================================================================
  运行Bypass AntiDBG OEP-ESTO脚本。
  
  1、出现2个异常,Shift+F9通过。
  2、来到OEP。
  
  ---伪OEP---
  007F17B5   /E9 66FF0400     JMP gclgj.00841720
  007F17BA   |E9 4D7A0000     JMP gclgj.007F920C
  007F17BF  ^|0F82 FAF4FDFF   JB gclgj.007D0CBF
  007F17C5   |9C              PUSHFD
  007F17C6   |E9 01A80300     JMP gclgj.0082BFCC
  007F17CB   |2B15 360C7E00   SUB EDX,DWORD PTR DS:[7E0C36]
  ====================================================================================================
  ---解密IAT----
  1、Ctrl+G:0040100,新建EIP。
  2、确定加密IAT表地址。LordPE查看区段表,BBS下面的c3usshcz即加密IAT区段。
  A、虚拟偏移 2A3000+400000=6A3000。
  B、在OD数据窗口定位Ctrl+G: 6A3000
  C、确定IAT表开始、结束位置。
  006A3204  00000000                               ; IATstart
  006A3208  007CE01C  gclgj.007CE01C
  006A320C  0083CFA3  gclgj.0083CFA3
  006A3210  00802C80  gclgj.00802C80
  ......
  006A3B6C  71A22B66  WS2_32.ntohs
  006A3B70  71A2406A  WS2_32.connect
  006A3B74  71A29639  WS2_32.closesocket
  006A3B78  71A31028  WS2_32.accept
  006A3B7C  00000000                                ; IATend
  D、修改ExeCryptor 2.xx IAT Rebuilder v1.1脚本。
  
  ===========================
  mov IATstart,006a3208
  mov IATend,006A3B78
  ===========================
  
  3、运行ExeCryptor 2.xx IAT Rebuilder v1.1脚本。
  
  006A3204  00000000
  006A3208  7C93188A  ntdll.RtlDeleteCriticalSection
  006A320C  7C9210ED  ntdll.RtlLeaveCriticalSection
  006A3210  7C921005  ntdll.RtlEnterCriticalSection
  006A3214  7C809FA1  kernel32.InitializeCriticalSection
  006A3218  7C809B14  kernel32.VirtualFree
  006A321C  7C809A81  kernel32.VirtualAlloc
  ......  省略。
  
  IAT解密完成,脚本结束。
  ====================================================================================================
  ---转存、修复转存---
  
  1、用PETools转存为dumped.exe。
  2、用ImportREC,OEP=003F17B5,RVA=2A3204。
  3、保存为dumped_.exe。
  修复转存结束。
  ====================================================================================================
  ---还原TLS---
  
  1、确定原TLS表地址。LordPE查看区段表,.rdata头部即原TLS表地址。
  2、修改TLS表RVA=002A8000,保存。
  ====================================================================================================
  ----修复OEP---
  
  OD载入dumped_.exe,来到伪OEP。
  007F17B5 > /E9 66FF0400     JMP Dumped_.00841720                     ; 注意007F17B5!
  007F17BA   |E9 4D7A0000     JMP Dumped_.007F920C
  007F17BF  ^|0F82 FAF4FDFF   JB Dumped_.007D0CBF
  007F17C5   |9C              PUSHFD
  
  Ctrl+G:00401000。
  Ctrl+S:jmp 007F17B5。
  
  005B8B04  - E9 AC8C2300     JMP Dumped_.<ModuleEntryPoint>           ; 这是真正的OEP!
  005B8B09    68 FB748200     PUSH Dumped_.008274FB
  005B8B0E  - E9 980F2900     JMP Dumped_.00849AAB
  005B8B13    0F95C6          SETNE DH
  005B8B16    33F2            XOR ESI,EDX
  005B8B18    68 8E8293A4     PUSH A493828E
  005B8B1D    58              POP EAX
  005B8B1E    81C8 08FC30C1   OR EAX,C130FC08
  
  参考一 软件修复OEP。
  
  005B8B04    55              PUSH EBP                                 ; 这是真正的OEP!
  005B8B05    8BEC            MOV EBP,ESP
  005B8B07    83C4 E0         ADD ESP,-20
  005B8B0A    53              PUSH EBX
  005B8B0B    56              PUSH ESI
  005B8B0C    57              PUSH EDI
  005B8B0D    33C0            XOR EAX,EAX
  005B8B0F    8945 E0         MOV DWORD PTR SS:[EBP-20],EAX
  005B8B12    8945 E4         MOV DWORD PTR SS:[EBP-1C],EAX
  005B8B15    8945 EC         MOV DWORD PTR SS:[EBP-14],EAX
  005B8B18    8945 E8         MOV DWORD PTR SS:[EBP-18],EAX
  005B8B1B    B8 4C865B00     MOV EAX,Dumped_.005B864C
  005B8B20    E8 E3E7E4FF     CALL Dumped_.00407308
  005B8B25    8B1D 14DD5B00   MOV EBX,DWORD PTR DS:[5BDD14]            ; Dumped_.005BEC90
  005B8B2B    33C0            XOR EAX,EAX
  005B8B2D    55              PUSH EBP
  005B8B2E    68 4A8F5B00     PUSH Dumped_.005B8F4A
  005B8B33    64:FF30         PUSH DWORD PTR FS:[EAX]
  005B8B36    64:8920         MOV DWORD PTR FS:[EAX],ESP
  
  保存为dumped_A.exe。用LordPE修改已修复OEP的脱壳文件dumped_A.exe,OEP=001B8B04。
  ====================================================================================================
  ---文件优化---
  
  试运行正常。
  
  原文件字节为1.87M,脱壳后文件为6.22M,太大。
  打开LordPE,保存.mackt区段到磁盘。
  删除下面的3个壳区段,装配上.mackt区段,文件字节减少到3.74M。
  
  
  需要练手的朋友可到这里下载原版、脱壳版。
  http://www.0wei.com/viewthread.php?tid=7306&extra=page%3D1
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年10月20日 22:47:45

  • 标 题:答复
  • 作 者:machenglin
  • 时 间:2006-11-06 22:16

文章中提到的脚本:execryptor.rar

引用: 最初由 回心转意 发布
请问:
Bypass AntiDBG OEP-ESTO脚本 在哪里啊!
ExeCryptor 2.xx IAT Rebuilder v1.1脚本 在哪里啊!!
谢谢