首页
社区
课程
招聘
[求助]脱黑防鸽子 PELock 1.0x -> Bartosz Wojcik
发表于: 2006-9-29 12:33 13142

[求助]脱黑防鸽子 PELock 1.0x -> Bartosz Wojcik

2006-9-29 12:33
13142
看了peaceclub大侠的瓦解PELock 1.0x -> Bartosz Wojcik秀的文章,小弟受益非浅,在把peaceclub示例中的PELock 1.0x -> Bartosz Wojcik文件脱壳后。自认为可以搞定黑防控制端,但是问题多多,特此来请教各位大侠。

第一步:进入解压段
为了配合脚本及过程,请您忽略所有异常,除了C000001D (ILLEGALINSTRUCTION)。

OD载入 停留在

0081D05C > /EB 02           JMP SHORT 黑防专版.0081D060 //停留在这里
0081D05E   |CD 20           INT 20
0081D060   \EB 01           JMP SHORT 黑防专版.0081D063
0081D062    43              INC EBX
0081D063    EB 02           JMP SHORT 黑防专版.0081D067
0081D065    CD 20           INT 20
0081D067    3BFE            CMP EDI,ESI
0081D069    EB 02           JMP SHORT 黑防专版.0081D06D
0081D06B    CD 20           INT 20
0081D06D    F2:             PREFIX REPNE:                            ; 多余的前缀
0081D06E    03FA            ADD EDI,EDX
0081D070    EB 02           JMP SHORT 黑防专版.0081D074

[动作]:F9运行
出现异常提示,点击"确定"
[动作]:Alt+M,查看内存,在“代码”上两行00390000段下访问断点,Shift+F9
断点生效后停在:

00392E54   /EB 02           JMP SHORT 00392E58 //停留在这里
00392E56   |0F5EEB          DIVPS XMM5,XMM3
00392E59    0361 79         ADD ESP,DWORD PTR DS:[ECX+79]
00392E5C    4B              DEC EBX
00392E5D    C1F2 00         SAL EDX,0                                ; 移位常量超出 1..31 的范围
00392E60    EB 03           JMP SHORT 00392E65
00392E62    17              POP SS                                   ; 段寄存器更改
00392E63    BE 24EB0263     MOV ESI,6302EB24
00392E68    D5 EB           AAD 0EB
00392E6A    020F            ADD CL,BYTE PTR DS:[EDI]
00392E6C    D0EB            SHR BL,1
00392E6E    020F            ADD CL,BYTE PTR DS:[EDI]
00392E70    04 EB           ADD AL,0EB
00392E72  ^ 7D C1           JGE SHORT 00392E35
00392E74    F1              INT1
00392E75    00EB            ADD BL,CH
00392E77    02CD            ADD CL,CH
00392E79    2070 03         AND BYTE PTR DS:[EAX+3],DH
00392E7C    71 01           JNO SHORT 00392E7F
00392E7E    C6              ???                                      ; 未知命令
00392E7F    EB 02           JMP SHORT 00392E83
00392E81    0F26            ???                                      ; 未知命令

第二步:IAT脚本修补:
调用ollyScript来运行下面的脚本,根据表的长度大小,需要点时间,当寄存器和代码不变化的时候,F12暂停执行,本人用这个脚本修复IAT 用了24分钟 汗!
此例中代码显示窗停在

0039602D    F3:AB           REP STOS DWORD PTR ES:[EDI] //停留在这里
0039602F    C1F5 00         SAL EBP,0                                ; 移位常量超出 1..31 的范围
00396032    E8 01000000     CALL 00396038
00396037    1C 8F           SBB AL,8F
00396039    44              INC ESP
0039603A    24 FC           AND AL,0FC
0039603C    EB 02           JMP SHORT 00396040
0039603E    2052 EB         AND BYTE PTR DS:[EDX-15],DL
00396041    0357 D5         ADD EDX,DWORD PTR DS:[EDI-2B]
00396044    EF              OUT DX,EAX                               ; I/O 命令
00396045    EB 02           JMP SHORT 00396049
00396047    0FB9            ???                                      ; 未知命令
00396049    EB 02           JMP SHORT 0039604D
0039604B    33B2 EB03BBA9   XOR ESI,DWORD PTR DS:[EDX+A9BB03EB]
00396051    62EB            BOUND EBP,EBX                            ; 非法使用寄存器
00396053    03F7            ADD ESI,EDI
00396055    C5D9            LDS EBX,ECX                              ; 非法使用寄存器
00396057    8B75 08         MOV ESI,DWORD PTR SS:[EBP+8]
0039605A    6A CC           PUSH -34
0039605C    8BFC            MOV EDI,ESP
0039605E    A6              CMPS BYTE PTR DS:[ESI],BYTE PTR ES:[EDI]
0039605F  ^ 74 FD           JE SHORT 0039605E
00396061    C1F0 00         SAL EAX,0                                ; 移位常量超出 1..31 的范围
00396064    EB 02           JMP SHORT 00396068
00396066    0F65EB          PCMPGTW MM5,MM3
00396069    02CD            ADD CL,CH

脚本代码
/*
PELock 1.0x -> Bartosz Wojcik IAT Fix script v0.1
Author: peaceclub
Email:   5261314@sohu.com
OS:      Winxp Sp2
Date:   2006-7-29
Action: Auto fix IAT,With Remote jmp Patch code
*/
var iat1
var nextstop
dbh

l1:
find eip,#8919#
bprm $RESULT,2
mov iat1,$RESULT

find eip,#C602E9#
mov nextstop,$RESULT
mov [nextstop],#ebfe#
eob I2
esto

I2:
cmp eip,iat1
jne I3
mov [ecx],eax
add eip,2
eob I2
esto

I3:
eob I2
esto

I4:
msg "IAT Fix OK.Please Ctrl+G,then input EDI-1 to Patch Code Area!"
cob
dbs
ret

第三步:RemoteJump代码混淆修补:
脚本停止后,提示:
IAT Fix OK.Please Ctrl+G,then input EDI-1 to Patch Code Area!
CPU窗口显示:

003982B5  - EB FE           JMP SHORT 003982B5 //停在这里
003982B7  - E9 8BC72BC2     JMP C2654A47
003982BC    83E8 05         SUB EAX,5
003982BF    8942 01         MOV DWORD PTR DS:[EDX+1],EAX
003982C2    8A06            MOV AL,BYTE PTR DS:[ESI]
003982C4    46              INC ESI
003982C5    0FB6C8          MOVZX ECX,AL
003982C8    83E0 03         AND EAX,3
003982CB    C1E9 02         SHR ECX,2
003982CE    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS>
003982D0    8BC8            MOV ECX,EAX
003982D2    F3:A4           REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
003982D4    8A06            MOV AL,BYTE PTR DS:[ESI]
003982D6    46              INC ESI
003982D7    03D0            ADD EDX,EAX
003982D9    C607 E9         MOV BYTE PTR DS:[EDI],0E9
003982DC    2BD7            SUB EDX,EDI
003982DE    83EA 05         SUB EDX,5
003982E1    8957 01         MOV DWORD PTR DS:[EDI+1],EDX
003982E4    83C7 05         ADD EDI,5
003982E7    4B              DEC EBX
003982E8  ^ 75 C3           JNZ SHORT 003982AD
003982EA    5F              POP EDI
[动作]:CPU窗口中Ctrl+G,输入Edi-1
不同机器申请空间不一样,我机器上是来到00f80000,粘贴以下二进制代码:
EB 05 8B 16 83 C6 04 8B FA 0F B6 06 46 80 3E 8D 74 15 50 8B C8 83 E0 03 C1 E9 02 F3 A5 8B C8 F3
A4 5A 46 90 90 EB 47 50 33 D2 33 C9 B1 06 F7 F1 8B C8 0F B6 46 01 8A E0 68 25 2D 35 3D 68 05 0D
15 1D B0 B8 33 D2 38 24 14 74 07 90 90 FE C0 42 EB F4 5A 5A 25 FF 00 00 00 50 33 C0 8B 56 02 03
C2 83 C6 06 E2 F6 5A 88 17 89 47 01 46 5A 4B 75 91 5F 8D 4D 66 2B CF F3 AA 61 C3

在00f80000新建EIP(光标移到00f80000,然后Ctrl+*)
[动作]:F4到修补代码最后的retn上

第四步:StolenCode修补:
在401000上下访问断点,F9运行,我们停留在:

005C5AF5    E8 8A12E4FF     CALL 黑防专版.00406D84 //停留在这里
005C5AFA    8B1D 08D15C00   MOV EBX,DWORD PTR DS:[5CD108]            ; 黑防专版.005D3760
005C5B00    8B35 14D25C00   MOV ESI,DWORD PTR DS:[5CD214]            ; 黑防专版.005CEBF4
005C5B06    8B06            MOV EAX,DWORD PTR DS:[ESI]
005C5B08    E8 4F28ECFF     CALL 黑防专版.0048835C
005C5B0D    8B0E            MOV ECX,DWORD PTR DS:[ESI]
005C5B0F    B2 01           MOV DL,1
005C5B11    A1 70865A00     MOV EAX,DWORD PTR DS:[5A8670]
005C5B16    E8 59AFEBFF     CALL 黑防专版.00480A74
005C5B1B    8903            MOV DWORD PTR DS:[EBX],EAX
005C5B1D    8B03            MOV EAX,DWORD PTR DS:[EBX]
005C5B1F    E8 A8F2EBFF     CALL 黑防专版.00484DCC
005C5B24    6A 00           PUSH 0
005C5B26    8B06            MOV EAX,DWORD PTR DS:[ESI]
005C5B28    8B40 30         MOV EAX,DWORD PTR DS:[EAX+30]
005C5B2B    50              PUSH EAX
005C5B2C    E8 9F21E4FF     CALL 黑防专版.00407CD0                       ; JMP 到 user32.ShowWindow
005C5B31    8B03            MOV EAX,DWORD PTR DS:[EBX]
005C5B33    8B10            MOV EDX,DWORD PTR DS:[EAX]
005C5B35    FF92 88000000   CALL DWORD PTR DS:[EDX+88]
005C5B3B    8B06            MOV EAX,DWORD PTR DS:[ESI]
005C5B3D    BA B05F5C00     MOV EDX,黑防专版.005C5FB0
005C5B42    E8 0D24ECFF     CALL 黑防专版.00487F54
005C5B47    8B03            MOV EAX,DWORD PTR DS:[EBX]
005C5B49    8B80 FC020000   MOV EAX,DWORD PTR DS:[EAX+2FC]
005C5B4F    BA C85F5C00     MOV EDX,黑防专版.005C5FC8
005C5B54    E8 5F21EAFF     CALL 黑防专版.00467CB8
005C5B59    8B03            MOV EAX,DWORD PTR DS:[EBX]

OK 问题开始了

1.壳的入口代码为什么和peaceclub大侠壳的代码不一样?
2.peaceclub大下说 看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60,如何看?如何知道OEP地址?
3.OEP真实地址是那里?如何优化?

peaceclub原文连接 http://bbs.pediy.com/showthread.php?s=&threadid=29806

研究一个月了 到了最后一步了 不会

请各位大侠帮忙看下

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

收藏
免费 0
支持
分享
最新回复 (32)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
peaceclub文章对于delphi是不适合的,看aki的

10月看雪月刊会刊出我的pelock脱壳机,我也不理会会不会对病毒造成影响了。
总不能因噎废食。
2006-9-29 13:24
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
3
最初由 forgot 发布
peaceclub文章对于delphi是不适合的,看aki的

10月看雪月刊会刊出我的pelock脱壳机,我也不理会会不会对病毒造成影响了。
总不能因噎废食。


看学的 PELOCK 文章我看多了

就他的我看的懂 其他的都复杂死``

aki的我也不是很明白

我不是为了脱壳而脱壳 希望版主给个解决办法?
2006-9-29 13:49
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
4
1.壳的入口代码为什么和peaceclub大侠壳的代码不一样?

   灰鸽子是 Delphi 程序,peaceclub 脱的是一个 VC 程序

2.peaceclub大下说 看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60,如何看?如何知道OEP地址?

   你需要找到抽掉的代码(已经被变形),然后得到长度,你停的Eip-长度就是原来的地址

3.OEP真实地址是那里?如何优化?

   向上看看就是了

另外:Delphi 程序有一个表被 PELock 抽走了,aki讲了如何还原。
2006-9-29 15:12
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
为什么老要讨论鸽子呢
2006-9-29 16:04
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
6
最初由 vrowang123 发布
为什么老要讨论鸽子呢


因为这个东西对我这个小菜来说有挑战性

非脱下他不可

感谢 版主
2006-9-29 17:06
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
7
最初由 forgot 发布
1.壳的入口代码为什么和peaceclub大侠壳的代码不一样?

灰鸽子是 Delphi 程序,peaceclub 脱的是一个 VC 程序

2.peaceclub大下说 看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60,如何看?如何知道OEP地址?
........


我问的问题1 我想不是因为程序问题把?

是不是壳设置的时候保护设置不一样 导致入口不一样?

怎么可能是因为程序序言问题 而导致壳入口代码不一样?
2006-9-29 17:47
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
8
哦,看错了。

壳开头是随机产生的垃圾代码。
2006-9-29 18:22
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
9
最初由 forgot 发布
哦,看错了。

壳开头是随机产生的垃圾代码。


看来这个壳的确很优秀

加密还是随机的 Thanks```
2006-9-29 18:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
看雪也出月刊,我一定要定
2006-9-29 20:13
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
11
月刊那里买?大约是什么内容?
2006-9-29 20:26
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我 顶一下  别打我  

2006-9-30 00:12
0
雪    币: 213
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
peaceclub的脚本是很慢的程序大了就慢了,VC用他的脚本还是可以的
但DELPHI用的话恢复IAT就要20-30分钟.
我也在研究delphi程序的脱壳,关键是一个输入表被抽掉后找不回来了
比较难搞.
PELOCK1.0X的脚本还有好几个的,有2个可以直接找会被偷走的代码.
希望能和楼主一起讨论delphi的脱壳
2006-9-30 11:11
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
14
最初由 Pucua 发布
peaceclub的脚本是很慢的程序大了就慢了,VC用他的脚本还是可以的
但DELPHI用的话恢复IAT就要20-30分钟.
我也在研究delphi程序的脱壳,关键是一个输入表被抽掉后找不回来了
比较难搞.
PELOCK1.0X的脚本还有好几个的,有2个可以直接找会被偷走的代码.
........

aki大侠的文章

写的就是delphi文章的 你可以去参考下 反正我是郁闷了
2006-9-30 11:19
0
雪    币: 213
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
AKI的文章不是很详细
HE 的断点下都没用
停不下
2006-9-30 12:35
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
16
10月看雪月刊?看雪出月刊?节日礼物?
什么时候看雪也办月刊了?
2006-9-30 12:41
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 Pucua 发布
AKI的文章不是很详细
HE 的断点下都没用
停不下


留个QQ交流下
2006-9-30 13:24
0
雪    币: 227
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
005C68EC     \7C5D5C00      DD      H_Client.005C5D7C
005C68F0      4C5D5C00      DD      H_Client.005C5D4C
005C68F4      00            DB      00
005C68F5      00            DB      00
005C68F6      00            DB      00
005C68F7      00            DB      00
005C68F8      6C615C00      DD      H_Client.005C616C
005C68FC      E3            DB      E3
005C68FD      71            DB      71                               ;  CHAR 'q'
005C68FE > $  55            PUSH    EBP               =>oep
005C68FF   .  8BEC          MOV     EBP, ESP
005C6901   .  83C4 F0       ADD     ESP, -10
005C6904   .  B8 94615C00   MOV     EAX, H_Client.005C6194
005C6909   .  E8 7604E4FF   CALL    H_Client.00406D84
005C690E   .  8B1D 24D15C00 MOV     EBX, DWORD PTR DS:[5CD124]       ;  H_Client.005D3180
005C6914   .  8B35 20D25C00 MOV     ESI, DWORD PTR DS:[5CD220]       ;  H_Client.005CEBF4
005C691A   .  8B06          MOV     EAX, DWORD PTR DS:[ESI]
005C691C   .  E8 5F1AECFF   CALL    H_Client.00488380
005C6921   .  8B06          MOV     EAX, DWORD PTR DS:[ESI]
005C6923   .  BA 746C5C00   MOV     EDX, H_Client.005C6C74
005C6928   .  E8 4B16ECFF   CALL    H_Client.00487F78
005C692D   .  8B0E          MOV     ECX, DWORD PTR DS:[ESI]
005C692F   .  B2 01         MOV     DL, 1
005C6931   .  A1 B0585A00   MOV     EAX, DWORD PTR DS:[5A58B0]
005C6936   .  E8 5DA1EBFF   CALL    H_Client.00480A98
005C693B   .  8903          MOV     DWORD PTR DS:[EBX], EAX
005C693D   .  8B03          MOV     EAX, DWORD PTR DS:[EBX]
005C693F   .  E8 ACE4EBFF   CALL    H_Client.00484DF0
005C6944   .  6A 00         PUSH    0                                ; /ShowState = SW_HIDE
005C6946   .  8B06          MOV     EAX, DWORD PTR DS:[ESI]          ; |
005C6948   .  8B40 30       MOV     EAX, DWORD PTR DS:[EAX+30]       ; |
005C694B   .  50            PUSH    EAX                              ; |hWnd
005C694C   .  E8 BF13E4FF   CALL    <JMP.&user32.ShowWindow>         ; \ShowWindow
005C6951   .  E8 AAF6FFFF   CALL    H_Client.005C6000
005C6956   .  8B0D 74D55C00 MOV     ECX, DWORD PTR DS:[5CD574]       ;  H_Client.005D2E08
005C695C   .  8B06          MOV     EAX, DWORD PTR DS:[ESI]
005C695E   .  8B15 20A25600 MOV     EDX, DWORD PTR DS:[56A220]       ;  H_Client.0056A26C
2006-9-30 23:26
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
19
最初由 damen 发布
005C68EC \7C5D5C00 DD H_Client.005C5D7C
005C68F0 4C5D5C00 DD H_Client.005C5D4C
005C68F4 00 DB 00
005C68F5 00 DB 00
005C68F6 00 DB 00
........


什么意识?

请楼上的拿我给的程序 给例子 Thanks
2006-9-30 23:46
0
雪    币: 213
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最初由 bestchao 发布
留个QQ交流下

QQ:363630638
注明:看雪
2006-10-4 14:07
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
21
QQ 7648373
加了说明来意

不喜欢加别人 一般都是别人家我 楼上的
2006-10-4 20:59
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
22
2006-10-8 12:50
0
雪    币: 207
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
上面他指明了oep的位置
2006-10-10 00:41
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
24
最初由 flong 发布
上面他指明了oep的位置


我已经搞定了

但是脱的不是PELOCK

是脱的别人修改的ASProtect 2.1x SKE -> Alexey Solodovnikov壳

哎 ASProtect 2.1x SKE -> Alexey Solodovnikov 都可以搞定

为什么PELOCK1.06就搞不定 冷壳就是冷壳?
2006-10-16 23:45
0
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
25
PELOCK用脱壳机就是了
2006-10-18 01:14
0
游客
登录 | 注册 方可回帖
返回
//