找回密码
 注册
搜索
热搜: 回贴

ExeCryptor_gclgj脱壳笔记,脱壳,脱壳技术

2010-1-30 18:21| 发布者: admin| 查看: 138| 评论: 0|原作者: 夙玉


ExeCryptor_gclgj脱壳笔记,脱壳,脱壳技术
2008年06月23日 星期一 下午 05:17
【文章标题】: ExeCryptor_gclgj脱壳笔记

【文章作者】: machengli

【软件名称】: 神机妙算钢筋 v8.7

【软件大小】: 1.87M

【下载地址】: http://www.0wei.com/viewthread.php?tid=7306&extra=page=1

【加壳方式】: 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_. ; 这是真正的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=1




最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 21:34 , Processed in 0.178313 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部