首页
社区
课程
招聘
新手脱壳游戏――UnPackMe
发表于: 2004-10-25 01:33 6885

新手脱壳游戏――UnPackMe

fly 活跃值
85
2004-10-25 01:33
6885
.

这个壳应该算是“古老”了
其实以前说过

如题所言,只是新手脱壳游戏,老鸟们就不必浪费时间了

GO GO GO  :D

附件:Try.rar

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

收藏
免费 1
支持
分享
最新回复 (17)
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
2004-10-25 03:07
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
努力中......
2004-10-25 10:57
0
雪    币: 6783
活跃值: (3532)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
sharelock   再看看
2004-10-25 11:52
0
雪    币: 209
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不是采用多线程的壳吧
2004-10-25 12:46
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
TO kimmal : 写个教程   ;)
2004-10-25 13:16
0
雪    币: 149
活跃值: (1256)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个怎么看都不像是有壳的啊.
不过看了kimmal的脱壳后文件,
再比较没脱壳的,发现原来的OEP入口被抽掉了
2004-10-25 15:43
0
雪    币: 255
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
最初由 fly 发布
TO kimmal : 写个教程 ;)


:)
教程不会写哦,
我脱壳一般是从输入表开始,
一般壳在跳到入口前都会处理输入表,
比如加密或初始化,
这个壳输入表完全没有加密,
只要注意其输入表的初始化过程就可以了,
还有它把代码段COPY到其分配的内存中去执行了
2004-10-25 16:09
0
雪    币: 319
活跃值: (2634)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
9
008BE2ED    6A 00           PUSH 0
008BE2EF    E8 D876FFFF     CALL 008B59CC                            ; JMP to KERNEL32.GetModuleHandleA
008BE2F4    A3 8CF84000     MOV DWORD PTR DS:[40F88C],EAX            ; Try.00400000
008BE2F9    68 E0D14000     PUSH 40D1E0
008BE2FE    33C9            XOR ECX,ECX
008BE300    BA 64000000     MOV EDX,64
008BE305    A1 8CF84000     MOV EAX,DWORD PTR DS:[40F88C]
008BE30A    E8 3977FFFF     CALL 008B5A48=======>过这个CALL就飞了!
008BE30F    B8 A8FA4000     MOV EAX,40FAA8
008BE314    E8 17BAFFFF     CALL 008B9D30
008BE319    B8 B0FA4000     MOV EAX,40FAB0
008BE31E    E8 0DBAFFFF     CALL 008B9D30
008BE323    B8 90FA4000     MOV EAX,40FA90
008BE328    E8 03BAFFFF     CALL 008B9D30
008BE32D    B8 98FA4000     MOV EAX,40FA98

跟不到入口处。请大侠们出手写个教程。而且跟飞处的代码是动态的,不过机器码没变。
2004-10-25 18:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
好啊
2004-10-25 19:11
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
11
这样算是脱壳了吗?
在看到kimmal兄的提示后,才算搞定,但体积还很大,不会修了.
我跟到
00417017   . /74 30            je short Try.00417049  ;运行到这行时,ESI=d4d0
00417019   . |A1 40104200      mov eax, dword ptr ds:[421040]
0041701E   . |50               push eax
0041701F   . |E8 910A0000      call Try.00417AB5
00417024   . |FF15 441B4200    call dword ptr ds:[421B44]
0041702A   . |8B0D 441B4200    mov ecx, dword ptr ds:[421B44]
00417030   . |51               push ecx
00417031   . |E8 7F0A0000      call Try.00417AB5
00417036   . |8BB424 4C010000  mov esi, dword ptr ss:[esp+14C]
0041703D   . |83C4 08          add esp, 8
00417040   . |56               push esi
00417041   . |FFD7             call edi
00417043   . |8B4424 34        mov eax, dword ptr ss:[esp+34]
00417047   . |EB 6F            jmp short Try.004170B8

发现如果使je short Try.00417049不跳转,则到call dword ptr ds:[421B44]里会是这样
003DDF00    0000               add byte ptr ds:[eax], al
003DDF02    0000               add byte ptr ds:[eax], al
003DDF04    0000               add byte ptr ds:[eax], al
003DDF06    0000               add byte ptr ds:[eax], al
003DDF08    0000               add byte ptr ds:[eax], al
003DDF0A    0000               add byte ptr ds:[eax], al
003DDF0C    0000               add byte ptr ds:[eax], al
003DDF0E    0000               add byte ptr ds:[eax], al
003DDF10    79 FF              jns short 003DDF11
003DDF12    FF33               push dword ptr ds:[ebx]
003DDF14    C055 68 E8         rcl byte ptr ss:[ebp+68], 0E8      ; Shift constant out of range 1..31
003DDF18    D840 00            fadd dword ptr ds:[eax]
003DDF1B    64:FF30            push dword ptr fs:[eax]
003DDF1E    64:8920            mov dword ptr fs:[eax], esp
003DDF21    E8 06B2FFFF        call 003D912C                      ; jmp to comctl_1.InitCommonControls

而如果从je short Try.00417049这跳转,会弹出提示注册窗口,点否后,从下面的JNZ跳走
004170B1   .  56               push esi                           ; |hOwner
004170B2   .  FF15 40F14100    call dword ptr ds:[<&USER32.Messag>; \MessageBoxA  ;提示注册的窗口
004170B8   >  83F8 06          cmp eax, 6
004170BB   .  6A 00            push 0                             ; /lParam = NULL
004170BD   .  0F85 57010000    jnz Try.0041721A  ; 选否后,这里跳转
004170C3   .  8B3D 44F14100    mov edi, dword ptr ds:[<&USER32.Cr>; |USER32.CreateWindowExA
004170C9   .  6A 00            push 0                             ; |hInst = NULL

从jnz Try.0041721A  会跳到下面
0041721A   > \8B0D E81D4200    mov ecx, dword ptr ds:[421DE8]
00417220   .  51               push ecx
00417221   .  8D5424 2C        lea edx, dword ptr ss:[esp+2C]
00417225   .  52               push edx
00417226   .  FF15 40104200    call dword ptr ds:[421040]
0041722C   .  8AD8             mov bl, al
0041722E   .  A1 40104200      mov eax, dword ptr ds:[421040]
00417233   .  50               push eax
00417234   .  E8 7C080000      call Try.00417AB5
00417239   .  83C4 10          add esp, 10
0041723C   .  84DB             test bl, bl
0041723E   .  74 06            je short Try.00417246
00417240   .  FF15 441B4200    call dword ptr ds:[421B44]
00417246   >  8B0D 441B4200    mov ecx, dword ptr ds:[421B44]
0041724C   .  51               push ecx
0041724D   .  E8 63080000      call Try.00417AB5

这时走到00417240   .  FF15 441B4200    call dword ptr ds:[421B44]时,发现里面的代码已经修复正常了
003DDF00    55                 push ebp
003DDF01    8BEC               mov ebp, esp
003DDF03    83C4 F0            add esp, -10
003DDF06    53                 push ebx
003DDF07    56                 push esi
003DDF08    57                 push edi
003DDF09    B8 68D44000        mov eax, 40D468
003DDF0E    E8 5579FFFF        call 003D5868
003DDF13    33C0               xor eax, eax
003DDF15    55                 push ebp
003DDF16    68 E8D84000        push 40D8E8
003DDF1B    64:FF30            push dword ptr fs:[eax]
003DDF1E    64:8920            mov dword ptr fs:[eax], esp
003DDF21    E8 06B2FFFF        call 003D912C                      ; jmp to comctl_1.InitCommonControls

然后,根据kimmal兄脱出来的文件,知道OEP是40d4d0,把这部分修复好的代码粘过去,再dump就行了.
不过还不会自己确定出正常的OEP
望各位指教
2004-10-25 22:51
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
12
另:
若在运行到je short Try.00417049之前,先跟进下面的call ebx
00416FF1   .  FFD3             call ebx  ;
00416FF3   .  8B7C24 2C        mov edi, dword ptr ss:[esp+2C]
00416FF7   .  8B4C24 28        mov ecx, dword ptr ss:[esp+28]
00416FFB   .  8B5424 20        mov edx, dword ptr ss:[esp+20]
00416FFF   .  8B72 18          mov esi, dword ptr ds:[edx+18]
00417002   .  2BCF             sub ecx, edi
00417004   .  8B3D 38F14100    mov edi, dword ptr ds:[<&USER32.De>;  USER32.DestroyWindow
0041700A   .  03CE             add ecx, esi
0041700C   .  83C4 0C          add esp, 0C
0041700F   .  84C0             test al, al
00417011   .  890D 441B4200    mov dword ptr ds:[421B44], ecx
00417017   .  74 30            je short Try.00417049

进入call ebx后来到
003DE670    83EC 3C            sub esp, 3C
003DE673    56                 push esi
003DE674    57                 push edi
003DE675    8B7C24 48          mov edi, dword ptr ss:[esp+48]
003DE679    33F6               xor esi, esi
003DE67B    EB 03              jmp short 003DE680
003DE67D    8D49 00            lea ecx, dword ptr ds:[ecx]
003DE680    A1 DC1D4200        mov eax, dword ptr ds:[421DDC]
003DE685    8B0D D81D4200      mov ecx, dword ptr ds:[421DD8]
003DE68B    8B15 D01D4200      mov edx, dword ptr ds:[421DD0]
003DE691    50                 push eax
003DE692    8B44F7 04          mov eax, dword ptr ds:[edi+esi*8+4>
003DE696    51                 push ecx
003DE697    8B0CF7             mov ecx, dword ptr ds:[edi+esi*8]
003DE69A    6A 00              push 0
003DE69C    52                 push edx
003DE69D    50                 push eax
003DE69E    51                 push ecx
003DE69F    E8 CC7B0300        call Try.00416270
003DE6A4    83C4 18            add esp, 18
003DE6A7    66:894474 10       mov word ptr ss:[esp+esi*2+10], ax
003DE6AC    46                 inc esi
003DE6AD    83FE 02            cmp esi, 2
003DE6B0  ^ 7C CE              jl short 003DE680
003DE6B2    8B5424 4C          mov edx, dword ptr ss:[esp+4C]
003DE6B6    3B5424 10          cmp edx, dword ptr ss:[esp+10]
003DE6BA    75 4C              jnz short 003DE708  ;只要不上这句跳,下面mov dword ptr ds:[edi+ecx], eax这里,就会还原3ddf00处的代码.
003DE6BC    33FF               xor edi, edi
003DE6BE    33F6               xor esi, esi
003DE6C0    A1 DC1D4200        mov eax, dword ptr ds:[421DDC]
003DE6C5    8B0D D81D4200      mov ecx, dword ptr ds:[421DD8]
003DE6CB    8B15 D01D4200      mov edx, dword ptr ds:[421DD0]
003DE6D1    50                 push eax
003DE6D2    A1 E41D4200        mov eax, dword ptr ds:[421DE4]
003DE6D7    51                 push ecx
003DE6D8    8B4C06 04          mov ecx, dword ptr ds:[esi+eax+4]
003DE6DC    6A 00              push 0
003DE6DE    52                 push edx
003DE6DF    8B1406             mov edx, dword ptr ds:[esi+eax]
003DE6E2    51                 push ecx
003DE6E3    52                 push edx
003DE6E4    E8 877B0300        call Try.00416270
003DE6E9    8B0D E01D4200      mov ecx, dword ptr ds:[421DE0]
003DE6EF    89040F             mov dword ptr ds:[edi+ecx], eax
003DE6F2    83C6 08            add esi, 8
003DE6F5    83C4 18            add esp, 18
003DE6F8    83C7 04            add edi, 4
003DE6FB    83FE 20            cmp esi, 20
003DE6FE  ^ 7C C0              jl short 003DE6C0  循环还原3ddf00处的代码
003DE700    5F                 pop edi
003DE701    B0 01              mov al, 1
003DE703    5E                 pop esi
003DE704    83C4 3C            add esp, 3C
003DE707    C3                 retn

返回之后
00417017   .  74 30            je short Try.00417049这就不跳了,软件就可直接正常运行.

但感觉上我好像只是去除了NAG,好像并没有实现脱壳?
2004-10-25 23:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
试试啊
2004-10-26 18:20
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
14
老大们,给点意见啊,我那么做算是脱壳了吗?
2004-10-27 20:08
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
15
在重定位后的OEP处脱壳
或者使其还原在原来的OEP

而非仅跳开nag
2004-10-27 20:33
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
16
有时间,老大详细说下,我第一次那种算是在重定位后脱的吗?
2004-10-27 20:50
0
雪    币: 898
活跃值: (4054)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
17
003DDF00  ?
能在此脱壳?

这个壳是N久以前搞的,还是让kimmal来写一下吧
2004-10-27 20:56
0
雪    币: 319
活跃值: (2634)
能力值: ( LV12,RANK:980 )
在线值:
发帖
回帖
粉丝
18
下断bp LoadLibraryA后返回:

003DDED8    55              PUSH EBP//这里是入口吗?DUMP后程序无法运行。
003DDED9    8BEC            MOV EBP,ESP
003DDEDB    83C4 F0         ADD ESP,-10
003DDEDE    53              PUSH EBX
003DDEDF    56              PUSH ESI
003DDEE0    57              PUSH EDI
003DDEE1    B8 68D44000     MOV EAX,40D468
003DDEE6    E8 5579FFFF     CALL 003D5840
003DDEEB    33C0            XOR EAX,EAX
003DDEED    55              PUSH EBP
003DDEEE    68 E8D84000     PUSH 40D8E8
003DDEF3    64:FF30         PUSH DWORD PTR FS:[EAX]
003DDEF6    64:8920         MOV DWORD PTR FS:[EAX],ESP
003DDEF9    E8 06B2FFFF     CALL 003D9104                            ; JMP to comctl_1.InitCommonControls
003DDEFE    33C0            XOR EAX,EAX
003DDF00    55              PUSH EBP
003DDF01    68 CBD84000     PUSH 40D8CB
003DDF06    64:FF30         PUSH DWORD PTR FS:[EAX]
003DDF09    64:8920         MOV DWORD PTR FS:[EAX],ESP
003DDF0C    68 F8D84000     PUSH 40D8F8                              ; ASCII "KERNEL32.DLL"
003DDF11    E8 3E7AFFFF     CALL 003D5954                            ; JMP to kernel32.LoadLibraryA
003DDF16    A3 CCE24000     MOV DWORD PTR DS:[40E2CC],EAX//返回到这里。            ; kernel32.77E40000
003DDF1B    68 08D94000     PUSH 40D908                              ; ASCII "GetProcAddress"
003DDF20    A1 CCE24000     MOV EAX,DWORD PTR DS:[40E2CC]
003DDF25    50              PUSH EAX
003DDF26    E8 017AFFFF     CALL 003D592C                            ; JMP to kernel32.GetProcAddress
003DDF2B    89C3            MOV EBX,EAX
003DDF2D    BA E4FA4000     MOV EDX,40FAE4
003DDF32    B8 20D94000     MOV EAX,40D920                           ; ASCII "47657450726F6341646472657373"
003DDF37    E8 04B9FFFF     CALL 003D9840
003DDF3C    A1 E4FA4000     MOV EAX,DWORD PTR DS:[40FAE4]
003DDF41    E8 2A65FFFF     CALL 003D4470
003DDF46    50              PUSH EAX
003DDF47    A1 CCE24000     MOV EAX,DWORD PTR DS:[40E2CC]
003DDF4C    50              PUSH EAX
003DDF4D    FFD3            CALL NEAR EBX
003DDF4F    89C3            MOV EBX,EAX
003DDF51    BA E4FA4000     MOV EDX,40FAE4
003DDF56    B8 48D94000     MOV EAX,40D948                           ; ASCII "4C6F61644C69627261727941"
003DDF5B    E8 E0B8FFFF     CALL 003D9840
003DDF60    A1 E4FA4000     MOV EAX,DWORD PTR DS:[40FAE4]
003DDF65    E8 0665FFFF     CALL 003D4470
003DDF6A    50              PUSH EAX
003DDF6B    A1 CCE24000     MOV EAX,DWORD PTR DS:[40E2CC]
003DDF70    50              PUSH EAX
003DDF71    FFD3            CALL NEAR EBX
003DDF73    89C6            MOV ESI,EAX
003DDF75    BA E4FA4000     MOV EDX,40FAE4
003DDF7A    B8 6CD94000     MOV EAX,40D96C                           ; ASCII "467265654C696272617279"
003DDF7F    E8 BCB8FFFF     CALL 003D9840
003DDF84    A1 E4FA4000     MOV EAX,DWORD PTR DS:[40FAE4]
003DDF89    E8 E264FFFF     CALL 003D4470
003DDF8E    50              PUSH EAX
003DDF8F    A1 CCE24000     MOV EAX,DWORD PTR DS:[40E2CC]
003DDF94    50              PUSH EAX
003DDF95    FFD3            CALL NEAR EBX
003DDF97    A3 C8E24000     MOV DWORD PTR DS:[40E2C8],EAX
003DDF9C    BA E4FA4000     MOV EDX,40FAE4
003DDFA1    B8 8CD94000     MOV EAX,40D98C                           ; ASCII "4578697450726F63657373"
003DDFA6    E8 95B8FFFF     CALL 003D9840
003DDFAB    A1 E4FA4000     MOV EAX,DWORD PTR DS:[40FAE4]

请FLY大侠指点!
2004-10-27 21:35
0
游客
登录 | 注册 方可回帖
返回