首页
社区
课程
招聘
[求助]严格按照tElock 1.0脱壳教程,遇到个问题
发表于: 2009-9-10 10:08 4933

[求助]严格按照tElock 1.0脱壳教程,遇到个问题

2009-9-10 10:08
4933
tElock 1.0 (private) -> tE!脱壳
fly的教程:
http://bbs.pediy.com/showthread.php?t=1595

我的过程:

1082809D >^\E9 5EDFFFFF     jmp     10826000                         ; //OD停在此处

108260E2    90              nop
10826D99    90              nop
10826E71    90              nop

1082753A    8BB5 57374000   mov     esi, dword ptr [ebp+403757]      ; //[ebp+403757]=ss:[1082817B]=00820000 ★ 这个00820000就是重定位表的RVA!
10827540    85F6            test    esi, esi
10827542    0F84 8B000000   je      108275D3
10827548    8B95 63374000   mov     edx, dword ptr [ebp+403763]
1082754E    03F2            add     esi, edx
10827550    2B95 67374000   sub     edx, dword ptr [ebp+403767]
10827556    74 7B           je      short 108275D3                   ; //Magic Jump,可以第2次Load后在这里改标志位Z=1,使其跳转 ★
10827558    8BDA            mov     ebx, edx                         ; //找到这里!
1082755A    C1EB 10         shr     ebx, 10
1082755D    8B06            mov     eax, dword ptr [esi]
1082755F    85C0            test    eax, eax
10827561    74 70           je      short 108275D3                   ; //重定位处理完毕后这里就跳转

108275D3    8B95 63374000   mov     edx, dword ptr [ebp+403763]      ; //重定位处理完毕。此时ESI=10820000,★ 就是重定位表的结束地址啦。
                                                                       //得到重定位表信息:RVA=00820000,大小=??????  这个大小是怎么算出来的?我的应该是多少? 
108275D9    8BB5 53374000   mov     esi, dword ptr [ebp+403753]      ; //[ebp+403753]=ss:[10828177]=000086B4 ★ 这就是输入表的RVA啦。
ss:[10828177]=000086B4
esi=10820000 (ix86ver2.10820000)
108275DF    85F6            test    esi, esi
108275E1    0F84 2F040000   je      10827A16                         ; //第2个Magic Jump,改标志位Z=1,使其跳转,则不加密IAT


当我们修改了以上两个Magic Jump,自108275E1处跳至10827A16
10827A16    8BBD 5B374000   mov     edi, dword ptr [ebp+40375B]
10827A1C    85FF            test    edi, edi
10827A1E    EB 03           jmp     short 10827A23

现在我们Alt+M打开 内存查看 窗口:


10002DE1    55              push    ebp                              ; //OEP
10002DE2    8BEC            mov     ebp, esp
10002DE4    53              push    ebx
10002DE5    8B5D 08         mov     ebx, dword ptr [ebp+8]


附件有我脱壳的dll

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
而且,ImportREC


谁能帮帮我
上传的附件:
2009-9-10 16:30
0
雪    币: 398
活跃值: (49)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
怪事,你的DLL一载入,怎么总是停在这里(我的所有OD都是如此,显然在此之前程序已经动执行一部分代码)

108260D1 5D pop ebp
108260D2 8D85 1E010000 lea eax, dword ptr ss:[ebp+11E]
108260D8 50 push eax
108260D9 33C0 xor eax, eax
108260DB 64:FF30 push dword ptr fs:[eax]
108260DE 64:8920 mov dword ptr fs:[eax], esp
108260E1 CC int3
108260E2 90 nop ; DLL一载入,怎么总是停在这里?
108260E3 8BC0 mov eax, eax
108260E5 9C pushfd
108260E6 6A 03 push 3
108260E8 73 0B jnb short 108260F5
108260EA EB 02 jmp short 108260EE
108260EC 75 75 jnz short 10826163

而不是OEP处:(因为我用PEid查看是:Entrypoint  0082809D

1082809D ^\E9 5EDFFFFF jmp 10826000 ; <-OEP 本应停在这里
108280A2 0000 add byte ptr ds:[eax], al
108280A4 005A 0F add byte ptr ds:[edx+F], bl
108280A7 2393 E5808200 and edx, dword ptr ds:[ebx+8280>
108280AD 0000 add byte ptr ds:[eax], al

而在练习fly的例子时停靠点又是正解的。
2009-9-10 22:31
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
求助,高手帮忙
2009-9-11 17:35
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
求助,高手们帮忙看看,修复的问题
2009-9-13 17:36
0
游客
登录 | 注册 方可回帖
返回
//