首页
社区
课程
招聘
[分享]EncryptPE V2.2004.7.27脱壳
发表于: 2005-4-13 23:00 13780

[分享]EncryptPE V2.2004.7.27脱壳

2005-4-13 23:00
13780

一、破解目标:EncryptPE V2.2004.7.27加壳的XX软件
二、破解工具:OllyDbg v1.10,ImportREC 1.6 Final
三、破解作者:DarkBull@email.com.cn
四、破解过程:
1.用OllyDbg载入,提示该程序为坏的或未知格式的32位执行文件,不必理会。该壳程序运行流程大致为:第一次运行时,先在系统目录内创建V22004727.EPE,然后加载该模块,初始化时通过SetWindowsHookEx设置远程系统钩子,再给Explorer.exe的Progman发送消息,将该钩子插入Explorer.exe中,如果用OD调试,该钩子会调用TerminateProcess结束OD进程,最后通过调用V22004727.EPE模块的EncryptPE_Init函数给Explorer.exe的Progman发送特定的消息,该消息被钩子函数捕获后,V22004727.EPE就创建一个新的进程,通过调用一系列调试函数来完成解压缩工作;第二次运行时,由于该钩子已被插入Explorer.exe中,所以程序自己跳过SetWindowsHookEx过程,我们就可以用OD调试了。
2.OK!第二次加载,程序停在如下处:
GraspNet.>  60         PUSHAD
009C0001    9C         PUSHFD
009C0002    64:FF35 00>PUSH DWORD PTR FS:[0]
009C0009    E8 7A01000>CALL GraspNet.009C0188
下断点BP EncryptPE_Init,拦截后代码如下:
V2200472.>  55         PUSH EBP                                       
711E39F9    8BEC       MOV EBP,ESP
711E39FB    51         PUSH ECX
711E39FC    E8 0100000>CALL V2200472.711E3A02                        ;有花指令,F7步入
711E3A01    EB 58      JMP SHORT V2200472.711E3A5B                               
711E3A03    8B4424 40  MOV EAX,DWORD PTR SS:[ESP+40]
711E3A07    8945 FC    MOV DWORD PTR SS:[EBP-4],EAX
直到如下代码处:
711E3C2E    6A 01      PUSH 1                                        ;lParam=1
711E3C30    68 C81B000>PUSH 1BC8                                ;wParam=1BC8
711E3C35    A1 0CDC1F7>MOV EAX,DWORD PTR DS:[711FDC0C]
711E3C3A    8B00       MOV EAX,DWORD PTR DS:[EAX]
711E3C3C    50         PUSH EAX                                        ;MSG=IsDebuggerPresentExEdLl(=wfs=)32EXPLORER.EXE
711E3C3D    A1 20DE1F7>MOV EAX,DWORD PTR DS:[711FDE20]
711E3C42    8B00       MOV EAX,DWORD PTR DS:[EAX]
711E3C44    50         PUSH EAX
711E3C45    E8 063DF4F>CALL V2200472.71127950                        ;JMP to USER32.SendMessageA
711E3C4A    EB 0A      JMP SHORT V2200472.711E3C56
711E3C4C    E8 FB7FFCF>CALL V2200472.711ABC4C
711E3C51    E8 3E81FCF>CALL V2200472.711ABD94
711E3C56    E8 E188FCF>CALL V2200472.711AC53C                        ;ExitProcess
该进程已完成任务,新的进程已被创建。
3.在出现EncryptPE注册窗口时,用OD附加于explorer.exe,下断HE WaitForDebugEvent,拦截后堆栈为:
0166FD28   711B081C  /CALL to WaitForDebugEvent from V2200472.711B0817
0166FD2C   0166FE8C  |pDebugEvent = 0166FE8C
0166FD30   FFFFFFFF  \Timeout = INFINITE
注意0166FE8C处为:
0166FE8C  01 00 00 00 74 01 00 00 3C 07 00 00 03 00 00 80  ...t..<....?
0166FE9C  00 00 00 00 00 00 00 00 B7 F1 1A 71 03 00 00 00  ........否q...
按F9运行,直到0166FEA4处为711AC53A时,向上观察发现:
0166FE4C  00 00 00 00 3B 00 00 00 23 00 00 00 23 00 00 00  ....;...#...#...
0166FE5C  00 00 00 00 00 00 00 00 00 F0 FD 7F 04 03 FE 7F  .........瘕?
0166FE6C  B0 FF 12 00 38 2C 72 00 F0 FF 12 00 38 2C 72 00  ?.8,r.?.8,r.
0166FE7C  1B 00 00 00 86 02 00 00 C4 FF 12 00 23 00 00 00  ...?..?.#...
OK,此时OEP为00722C38。
4.DUMP下整个进程,用ImportREC结合OD修复IAT,以下为加密IAT的关键部分(以CloseHandle为例):
711AC910   /74 04      JE SHORT V2200472.711AC916
711AC912   |75 02      JNZ SHORT V2200472.711AC916
711AC914   |FF25 9C505>JMP NEAR DWORD PTR DS:[7453509C]
711AC91A    0375 01    ADD ESI,DWORD PTR SS:[EBP+1]
711AC91D    E8 E845A7F>CALL 68C20F0A
711AC922    FF9C58 A35>CALL FAR FWORD PTR DS:[EAX+EBX*2+2006>
711AC929    71 74      JNO SHORT V2200472.711AC99F
711AC92B    04 75      ADD AL,75
711AC92D    02FF       ADD BH,BH
711AC92F    15 E8BF000>ADC EAX,0BFE8
711AC934    0031       ADD BYTE PTR DS:[ECX],DH
711AC936    C0A0 85062>SHL BYTE PTR DS:[EAX+71200685],83
711AC93D    F8         CLC
711AC93E    0075 36    ADD BYTE PTR SS:[EBP+36],DH
711AC941    8B4424 0C  MOV EAX,DWORD PTR SS:[ESP+C]
711AC945    89C3       MOV EBX,EAX
711AC947    83C0 02    ADD EAX,2
711AC94A    8B00       MOV EAX,DWORD PTR DS:[EAX]
711AC94C    8B00       MOV EAX,DWORD PTR DS:[EAX]
711AC94E    31D8       XOR EAX,EBX
711AC950    89C3       MOV EBX,EAX                                ;kernel32.CloseHandle
711AC952    894424 0C  MOV DWORD PTR SS:[ESP+C],EAX
711AC956    8B03       MOV EAX,DWORD PTR DS:[EBX]
711AC958    3C CC      CMP AL,0CC                                ;断点检查
711AC95A    74 14      JE SHORT V2200472.711AC970
711AC95C    80FC CC    CMP AH,0CC                               
711AC95F    74 0F      JE SHORT V2200472.711AC970
711AC961    C1E8 10    SHR EAX,10
711AC964    3C CC      CMP AL,0CC
711AC966    74 08      JE SHORT V2200472.711AC970
711AC968    80FC CC    CMP AH,0CC
711AC96B    74 03      JE SHORT V2200472.711AC970
711AC96D    EB 08      JMP SHORT V2200472.711AC977
711AC96F  - E9 C605850>JMP SHELL32.779FCF3A
711AC974    2071 01    AND BYTE PTR DS:[ECX+1],DH
711AC977    5B         POP EBX
711AC978    58         POP EAX
711AC979    9D         POPFD
711AC97A    C3         RETN                                        ;返回到函数入口
5.后记:老王老师的EPEv2真的很厉害啊,偶等菜鸟苦心钻研多日,也才略知皮毛。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (24)
雪    币: 209
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
顶!~~~~感觉手法比较巧
2005-4-13 23:56
0
雪    币: 557
活跃值: (2303)
能力值: ( LV9,RANK:2130 )
在线值:
发帖
回帖
粉丝
3
你可以反汇编,可以试尝破解,但不得写破解教程或发布注册机破解版之类的......小心打PP哦
2005-4-14 01:09
0
雪    币: 266
活跃值: (191)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
顶下,睡觉了
2005-4-14 01:56
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
支持~!
2005-4-14 05:05
0
雪    币: 2199
活跃值: (1975)
能力值: ( LV12,RANK:810 )
在线值:
发帖
回帖
粉丝
6
好看,PP打肿
2005-4-14 08:06
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
7
好文,支持你!不过PP要顶住,老王随后就来....   
2005-4-14 08:50
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
8
继续努力

如果没有注册窗口,何时附加?
IAT地址和某些指令有变形,需要修复
2005-4-14 09:03
0
雪    币: 329
活跃值: (411)
能力值: ( LV9,RANK:730 )
在线值:
发帖
回帖
粉丝
9

多谢fly兄的鼓励,可以在SendMessage前附加,下好断点后,再按一百多次F9,可以观察DebugEvent的内容,IAT算法明确,但修复T十分麻烦.
2005-4-14 16:31
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
10
辛苦,支持一下!
(先收藏一份)
2005-4-14 18:27
0
雪    币: 107
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
支持一下
2005-4-14 23:47
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
12
最初由 DarkBull 发布

多谢fly兄的鼓励,可以在SendMessage前附加,下好断点后,再按一百多次F9,可以观察DebugEvent的内容,IAT算法明确,但修复T十分麻烦.


输入表修复不难
也没有这么麻烦

继续努力  
2005-4-15 00:37
0
雪    币: 223
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
按一百多次F9?

这是脱壳  还是脱皮
2005-4-15 21:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
按一百多次F9?

这是脱壳  还是脱皮

卖键盘的可发了 .....
估计卖电脑耗材的大部分都是卖给CRACK爱好者的..
2005-4-21 22:20
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
15
请不要讽刺别人
最起码他的毅力就是值得学习的!

你可以探索更简便的方法
2005-4-21 22:22
0
雪    币: 319
活跃值: (2459)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
16
支持fly 所言!支持楼主!
2005-4-22 10:09
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
好贴当顶
2005-4-22 11:15
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
18
支持一下
2005-4-22 22:54
0
雪    币: 174
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
最初由 fly 发布
请不要讽刺别人
最起码他的毅力就是值得学习的!

你可以探索更简便的方法

厉害哦~!嘿嘿~!
2005-4-23 11:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
说错话了,我的意思是CRACK爱好者精神可嘉,意志坚定啊
不过算一下
100次 一天   一般键盘都是百万次的
  那么几个月键盘就需要换了。
2005-4-25 21:12
0
雪    币: 10734
活跃值: (2449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
哎  2004.8.10的把我难住了 axzy兄 是否能提供的信息我?
2005-4-26 13:46
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
看不懂也要顶
2005-4-26 20:41
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
wzmooo 兄弟 我也初学者
不用04.8.10了
用05.3.12了 注册了..
2005-5-11 21:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
收藏了,谢谢
2005-5-14 16:04
0
雪    币: 219
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
好好啊,学习中...........
2005-5-19 20:52
0
游客
登录 | 注册 方可回帖
返回
//