首页
社区
课程
招聘
瓦解PELock 1.0x -> Bartosz Wojcik秀 的问题?
发表于: 2006-7-30 09:17 6647

瓦解PELock 1.0x -> Bartosz Wojcik秀 的问题?

2006-7-30 09:17
6647
Alt+M,查看内存,在DLL_Load模块的上两行00380000段下访问断点,Shift+F9
断点生效后停在:

QUOTE:

00382E54   /EB 02       JMP SHORT 00382E58
00382E56   |0F5EEB       DIVPS XMM5,XMM3
00382E59   0361 79       ADD ESP,DWORD PTR DS:[ECX+79]
00382E5C   4B         DEC EBX
00382E5D   C1F2 00       SAL EDX,0                     ; Shift constant out of range 1..31
00382E60   EB 03       JMP SHORT 00382E65
00382E62   17         POP SS                       ; Modification of segment register
00382E63   BE 24EB0263   MOV ESI,6302EB24
00382E68   D5 EB       AAD 0EB
00382E6A   020F         ADD CL,BYTE PTR DS:[EDI]
00382E6C   D0EB         SHR BL,1

为什么我停留的位置不一样?哪位大侠知道
004066B9    8807            MOV BYTE PTR DS:[EDI],AL //停在这里
004066BB    47              INC EDI
004066BC    02DB            ADD BL,BL
004066BE    73 09           JNB SHORT Dll_Load.004066C9
004066C0  ^ 75 F4           JNZ SHORT Dll_Load.004066B6
004066C2    8A1E            MOV BL,BYTE PTR DS:[ESI]
004066C4    46              INC ESI
004066C5    12DB            ADC BL,BL
004066C7  ^ 72 ED           JB SHORT Dll_Load.004066B6
004066C9    B8 01000000     MOV EAX,1
004066CE    02DB            ADD BL,BL
004066D0    75 05           JNZ SHORT Dll_Load.004066D7
004066D2    8A1E            MOV BL,BYTE PTR DS:[ESI]
004066D4    46              INC ESI
004066D5    12DB            ADC BL,BL
004066D7    13C0            ADC EAX,EAX
004066D9    02DB            ADD BL,BL
004066DB  ^ 73 F1           JNB SHORT Dll_Load.004066CE
004066DD    75 07           JNZ SHORT Dll_Load.004066E6
004066DF    8A1E            MOV BL,BYTE PTR DS:[ESI]
004066E1    46              INC ESI
004066E2    12DB            ADC BL,BL
004066E4  ^ 73 E8           JNB SHORT Dll_Load.004066CE
004066E6    83E8 03         SUB EAX,3
004066E9    72 0D           JB SHORT Dll_Load.004066F8
004066EB    C1E0 08         SHL EAX,8

谢谢了 很早都想学脱这个了。。可惜还没搞定

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
建议将原文理解透。
最初由 peaceclub 发布
请您忽略所有异常,除了C000001D (ILLEGAL INSTRUCTION)。
出现异常提示,点击"确定

异常提示:
2006-7-30 11:06
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
遇见故人了
2006-7-30 12:50
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
4
看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60:

引用:
00401D60  /.  55            PUSH EBP
00401D61  |.  8BEC          MOV EBP,ESP
00401D63  |.  6A 00         PUSH 0         **注意:此处正常为push -1,壳作者把它修改了,我们也照旧吧***
00401D65  |.  68 B0354000   PUSH pel.004035B0
00401D6A  |.  68 E61E4000   PUSH pel.00401EE6                        ;  JMP to msvcrt._except_handler3; SE handler installation
00401D6F  |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00401D75  |.  50            PUSH EAX
00401D76  |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401D7D  |.  83EC 68       SUB ESP,68
00401D80  |.  53            PUSH EBX
00401D81  |.  56            PUSH ESI
00401D82  |.  57            PUSH EDI
00401D83  |.  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
00401D86  |.  33DB          XOR EBX,EBX
00401D88  |.  895D FC       MOV DWORD PTR SS:[EBP-4],EBX
00401D8B  |.  6A 02         PUSH 2

问题1 为什么要按VC程序补?
问题2 为什么OEP是401d60 怎么来的?
问题3 代码不一样? 我的代码是。
00401D54  - FF25 E4314000   JMP DWORD PTR DS:[4031E4]                ; msvcrt.__CxxFrameHandler
00401D5A    CC              INT3
00401D5B    CC              INT3
00401D5C    CC              INT3
00401D5D    CC              INT3
00401D5E    CC              INT3
00401D5F    CC              INT3
00401D60    72 39           JB SHORT Dll_Load.00401D9B
00401D62    1C 8E           SBB AL,8E
00401D64    C7              ???                                      ; 未知命令
00401D65  ^ E3 F1           JECXZ SHORT Dll_Load.00401D58
00401D67  ^ 78 BC           JS SHORT Dll_Load.00401D25
00401D69    5E              POP ESI
00401D6A    2F              DAS
00401D6B    97              XCHG EAX,EDI
00401D6C    4B              DEC EBX
00401D6D    25 92C9E472     AND EAX,72E4C992
00401D72    391C0E          CMP DWORD PTR DS:[ESI+ECX],EBX
00401D75    87C3            XCHG EBX,EAX
00401D77    61              POPAD
00401D78    3098 CCE67339   XOR BYTE PTR DS:[EAX+3973E6CC],BL
00401D7E    9C              PUSHFD
00401D7F    4E              DEC ESI
00401D80    27              DAA
00401D81    93              XCHG EAX,EBX
00401D82    C9              LEAVE
00401D83    64:B2 59        MOV DL,59                                ; 多余的前缀
00401D86    2C 16           SUB AL,16
00401D88    8B45 A2         MOV EAX,DWORD PTR SS:[EBP-5E]
00401D8B    D168 FF         SHR DWORD PTR DS:[EAX-1],1
00401D8E    15 C8314000     ADC EAX,Dll_Load.004031C8
00401D93    59              POP ECX
00401D94    830D 70424000 F>OR DWORD PTR DS:[404270],FFFFFFFF
00401D9B    830D 74424000 F>OR DWORD PTR DS:[404274],FFFFFFFF
00401DA2    FF15 C4314000   CALL DWORD PTR DS:[4031C4]               ; msvcrt.__p__fmode
00401DA8    8B0D 64424000   MOV ECX,DWORD PTR DS:[404264]
00401DAE    8908            MOV DWORD PTR DS:[EAX],ECX
00401DB0    FF15 C0314000   CALL DWORD PTR DS:[4031C0]               ; msvcrt.__p__commode

最后一个问题了 搞定了这个就解决了  那位大侠来帮下忙咯
2006-7-30 14:21
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
5
来个高手解决下啊。。等半天了。。
2006-7-30 16:16
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
6
哎,看你等等等,我来回答你吧

问题1 为什么要按VC程序补?
问题2 为什么OEP是401d60 怎么来的?
问题3 代码不一样? 我的代码是。


第一个和第2个问题很弱

看语言特征嘛

msvcrt.__set_app_type
msvcrt.__p__fmode

都是VC的专利

问题三呢依然很弱,因为你操作都错了

RemoteJump没处理或者是没处理对

PS:楼主是大名鼎鼎的B超?牛人啊
2006-7-30 16:47
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
7
操作没错啊?
什么牛人啊?倒 新人。才来看雪
看雪都是牛人 我就什么都不是了 才研究这个壳
2006-7-30 16:58
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 bestchao 发布
操作没错啊?
什么牛人啊?倒 新人。才来看雪
看雪都是牛人 我就什么都不是了 才研究这个壳


你RemoteJump没处理对啦

PS:很少见B超有这么谦虚的时候了
2006-7-30 17:06
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
9
请教 你RemoteJump没处理对啦

这个在那里?文章没看见?麻烦了

我现在专心学东西。。懂的越多 才知道学的太少。。
2006-7-30 17:14
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
10
留个QQ请教?麻烦了 为了研究这个半个月了
没进展。。。那么多方法 还是这个最方便

可惜最后一步又卡住了
2006-7-30 17:14
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
11
我在这里回答了
http://bbs.pediy.com/showthread.php?s=&threadid=29850
2006-7-30 17:22
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
12
楼上的早发脱壳机,我就不用研究pelock了.
发机吧
2006-7-30 18:32
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
13
哈哈 罗老大来了

我要的是技术。。不是要脱壳。。

用脱壳机脱多没意识。。
2006-7-30 18:40
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
牛B的B哥是想学会后在菜鸟面前来个“宠物”炫
2006-7-30 18:53
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
15
成心请教问题
请不要语言攻击
不愿意指导就拉倒
谢谢合作
2006-7-30 18:55
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
16
最初由 bestchao 发布
成心请教问题
请不要语言攻击
不愿意指导就拉倒
谢谢合作

这不是忙中挑闲 调侃下嘛
2006-7-30 18:58
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
17
我只想彻底解决最后一个问题

请指导一下。。

最后一步停留的地方都是对的

补丁地方代码不对?
2006-7-30 19:00
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
18
第四步:StolenCode修补:

在401000上下访问断点,F9运行,我们停留在:

QUOTE:

00401D8D   ? FF15 C8314000 CALL DWORD PTR DS:[4031C8]           ; msvcrt.__set_app_type
00401D93   . 59         POP ECX
00401D94   . 830D 70424000>OR DWORD PTR DS:[404270],FFFFFFFF
00401D9B   . 830D 74424000>OR DWORD PTR DS:[404274],FFFFFFFF
00401DA2   . FF15 C4314000 CALL DWORD PTR DS:[4031C4]           ; msvcrt.__p__fmode
00401DA8   . 8B0D 64424000 MOV ECX,DWORD PTR DS:[404264]
00401DAE   . 8908       MOV DWORD PTR DS:[EAX],ECX

我这里还是正确的 停留位置一样

到这里就迷茫了?
看堆栈区域和cpu窗口代码,我们依照VC程序入口点进行修补,oep为401d60:

QUOTE:

00401D60 /. 55         PUSH EBP
00401D61 |. 8BEC       MOV EBP,ESP
00401D63 |. 6A 00       PUSH 0       **注意:此处正常为push -1,壳作者把它修改了,我们也照旧吧***
00401D65 |. 68 B0354000   PUSH pel.004035B0
00401D6A |. 68 E61E4000   PUSH pel.00401EE6                 ; JMP to msvcrt._except_handler3; SE handler installation
00401D6F |. 64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
00401D75 |. 50         PUSH EAX
00401D76 |. 64:8925 00000>MOV DWORD PTR FS:[0],ESP
00401D7D |. 83EC 68     SUB ESP,68
00401D80 |. 53         PUSH EBX
00401D81 |. 56         PUSH ESI
00401D82 |. 57         PUSH EDI
00401D83 |. 8965 E8     MOV DWORD PTR SS:[EBP-18],ESP
00401D86 |. 33DB       XOR EBX,EBX
00401D88 |. 895D FC     MOV DWORD PTR SS:[EBP-4],EBX
00401D8B |. 6A 02       PUSH 2

他的意识是

他这个代码 就

00401D63 |. 6A 00       PUSH 0       **注意:此处正常为push -1,壳作者把

把这个改下?如果是这样?为什么我的代码这里完全不一样

如果他写的是全部补丁代码 我补上去了也是假? 迷糊。。
2006-7-30 19:04
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
19
补丁的地方是动态的
你每次调试都不一样的
所以你跟罗兄文章里面的地址不一样 是很正常的
他提供的代码具体很高的通用性
我还没发现不对的地方
至于你是怎么操作的我就不知了
可以把你操作这段的利用录象录下来
这样一切就更明了了 不是么?
2006-7-30 19:05
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
20
何必你做个录象。。发给我看

我一下就明了了。。这样不就更好么

留个QQ把 朋友。。成心请教
2006-7-30 19:09
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
21
最初由 bestchao 发布
何必你做个录象。。发给我看

我一下就明了了。。这样不就更好么

留个QQ把 朋友。。成心请教

呵呵 要求还蛮多的
你就在这等其他人吧
2006-7-30 19:56
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
22
查softworm笔记,发现有问题:

cmp eax, imm32
这个修复直接复制似乎不对,从我的代码来看,这里应该是

                                ; 81F8 -> 3D same "cmp eax, DWORD"
                        .elseif        w [esi] == 0F881h
                                dec        ecx
                                inc        esi                               
                                mov        b [esi], 3Dh
                                jmp        @@copy
                        .else
2006-7-30 22:02
0
雪    币: 494
活跃值: (629)
能力值: ( LV9,RANK:1210 )
在线值:
发帖
回帖
粉丝
23
不管对不对,我都不记得了,那是刚学脱壳的时候写的
2006-7-30 22:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
最初由 softworm 发布
不管对不对,我都不记得了,那是刚学脱壳的时候写的


2006-7-31 08:23
0
游客
登录 | 注册 方可回帖
返回
//