首页
社区
课程
招聘
用Ollydbg手脱PECompact 2.x---莱鸟第一脱[原创]
发表于: 2005-12-9 10:15 6758

用Ollydbg手脱PECompact 2.x---莱鸟第一脱[原创]

2005-12-9 10:15
6758
用Ollydbg手脱PECompact 2.x---莱鸟第一脱

     日期:2005年12月9日   破解人:林海雪原
―――――――――――――――――――――――――――――――――――――――――――

【软件名称】:   软件版本:
【软件大小】: KB
【下载地址】:练习品下载:proj2.rar
【软件简介】:为学脱壳,把自已的东东加了壳,练习
【软件限制】:
【破解声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!
【破解工具】:Win2003、flyODBG、PEiD、LordPE、ImportREC

―――――――――――――――――――――――――――――――――――――――――――
   这是我第一次写脱文,也是第一次脱掉一个壳(虽然是个弱的,但我是莱鸟,也应高兴一下

【破解过程】:

不用PEID查,知是:PECompact 2.x -> Jeremy Collake

用OD载入:

00401000 P> $  B8 487E4800           mov eax,Proj2.00487E48
00401005    .  50                    push eax
00401006    .  64:FF35 00000000      push dword ptr fs:[0]
0040100D    .  64:8925 00000000      mov dword ptr fs:[0],esp
00401014    ?  33C0                  xor eax,eax
00401016    ?  8908                  mov dword ptr ds:[eax],ecx
00401018    ?  50                    push eax
00401019    ?  45                    inc ebp
0040101A    .  43                    inc ebx
0040101B    ?  6F                    outs dx,dword ptr es:[edi]
0040101C    ?  6D                    ins dword ptr es:[edi],dx
0040101D    ?  70 61                 jo short Proj2.00401080
0040101F    .  637432 00             arpl word ptr ds:[edx+esi],si
00401023    ?  CE                    into
00401024    .  1E                    push ds
00401025    ?  42                    inc edx
00401026    ?  AF                    scas dword ptr es:[edi]
00401027    ?  F8                    clc

下断定bp kernel32.LoadLibraryA,中断3次:

77E1850D k>  53                      push ebx
77E1850E     8B5C24 08               mov ebx,dword ptr ss:[esp+8]
77E18512     85DB                    test ebx,ebx
77E18514     56                      push esi
77E18515     57                      push edi
77E18516     74 12                   je short kernel32.77E1852A
77E18518     68 CCFFE477             push kernel32.77E4FFCC                ; ASCII "twain_32.dll"
77E1851D     53                      push ebx
77E1851E     FF15 BC13E177           call dword ptr ds:[<&ntdll._strcmpi>] ; ntdll._stricmp

**************************
0012FF24   0012FF6C
0012FF28   003E002C   /CALL 到 LoadLibraryA 来自 003E002A
0012FF2C   003E001D   \FileName = "kernel32.dll"
0012FF30   0012FF84
**************************
取消断点,ctrl+f9:

77E18524     85C0                    test eax,eax
77E18526     59                      pop ecx
77E18527     59                      pop ecx
77E18528     74 10                   je short kernel32.77E1853A
77E1852A     6A 00                   push 0
77E1852C     6A 00                   push 0
77E1852E     53                      push ebx
77E1852F     E8 B4FFFFFF             call kernel32.LoadLibraryExA
77E18534     5F                      pop edi
77E18535     5E                      pop esi
77E18536     5B                      pop ebx
77E18537     C2 0400                 retn 4   ;到这!

f7,retn to :

003E002C     85C0                    test eax,eax                          ; kernel32.77E10000<< retn to这
003E002E     0F84 8F000000           je 003E00C3
003E0034     8BF0                    mov esi,eax
003E0036     E8 0C000000             call 003E0047                      <<<<<<!
003E003B     56                      push esi
003E003C     6972 74 75616C46        imul esi,dword ptr ds:[edx+74],466C61>
003E0043     72 65                   jb short 003E00AA
003E0045     65:0056 FF              add byte ptr gs:[esi-1],dl
003E0049     53                      push ebx
003E004A     04 85                   add al,85
003E004C     C07474 8B E8            sal byte ptr ss:[esp+esi*2-75],0E8
003E0051     E8 0D000000             call 003E0063                    <<<<<<<!
003E0056     56                      push esi
003E0057     6972 74 75616C41        imul esi,dword ptr ds:[edx+74],416C61>
003E005E     6C                      ins byte ptr es:[edi],dx
003E005F     6C                      ins byte ptr es:[edi],dx

*****************************************
EBP 77E16366 kernel32.VirtualFree
ESI 00970000
EDI 00401000 Proj2.<ModuleEntryPoint>
EIP 003E00C0
******************************************

003E1222     5E             pop esi
003E1223     5E             pop esi
003E1224     5A             pop edx
003E1225     59             pop ecx
003E1226     83C6 1C        add esi,1C
003E1229     49             dec ecx
003E122A   ^ 0F85 0BFFFFFF  jnz 003E113B            :上?
003E1230     33C0           xor eax,eax            :f4! 到这!  
003E1232     5E             pop esi
003E1233     5F             pop edi
003E1234     5B             pop ebx

003E0E09     03C7           add eax,edi
003E0E0B     68 00800000    push 8000
003E0E10     6A 00          push 0
003E0E12     FFB5 9B1D0010  push dword ptr ss:[ebp+10001D9B]
003E0E18     FF10           call dword ptr ds:[eax]               ; kernel32.VirtualFree
003E0E1A     8B46 0C        mov eax,dword ptr ds:[esi+C]          ;ds:[003E0B3C]=00065B60 , oep!
003E0E1D     03C7           add eax,edi
003E0E1F     5D             pop ebp
003E0E20     5E             pop esi
003E0E21     5F             pop edi
003E0E22     5B             pop ebx
003E0E23     C3             retn

00487EF5     8985 D0120010  mov dword ptr ss:[ebp+100012D0],eax   ; Proj2.00465B60
00487EFB     8BF0           mov esi,eax
00487EFD     59             pop ecx
00487EFE     5A             pop edx
00487EFF     EB 0C          jmp short Proj2.00487F0D
00487F01     03CA           add ecx,edx
00487F03     68 00800000    push 8000
00487F08     6A 00          push 0
00487F0A     57             push edi
00487F0B     FF11           call dword ptr ds:[ecx]
00487F0D     8BC6           mov eax,esi
00487F0F     5A             pop edx
00487F10     5E             pop esi
00487F11     5F             pop edi
00487F12     59             pop ecx
00487F13     5B             pop ebx
00487F14     5D             pop ebp
00487F15     FFE0           jmp eax                   ;<<-------oep!跳过去,就是传说中的天堂!
00487F17     0000           add byte ptr ds:[eax],al

在这里dump!
00465B60     55                push ebp                           ;跳到这!
00465B61     8BEC              mov ebp,esp
00465B63     83C4 F0           add esp,-10
00465B66     B8 70594600       mov eax,Proj2.00465970
00465B6B     E8 0001FAFF       call Proj2.00405C70
00465B70     A1 24794600       mov eax,[dword ds:467924]
00465B75     8B00              mov eax,[dword ds:eax]
00465B77     E8 B4ABFEFF       call Proj2.00450730
00465B7C     8B0D 087A4600     mov ecx,[dword ds:467A08]           ; Proj2.00468BD8
00465B82     A1 24794600       mov eax,[dword ds:467924]
00465B87     8B00              mov eax,[dword ds:eax]
00465B89     8B15 0C514600     mov edx,[dword ds:46510C]           ; Proj2.00465158
00465B8F     E8 B4ABFEFF       call Proj2.00450748
00465B94     A1 24794600       mov eax,[dword ds:467924]
00465B99     8B00              mov eax,[dword ds:eax]
00465B9B     E8 28ACFEFF       call Proj2.004507C8
00465BA0     E8 F3E1F9FF       call Proj2.00403D98
00465BA5     8D40 00           lea eax,[dword ds:eax]

另存为unProj.exe,运行一下,成功!

用PEID查是:Borland Delphi 6.0 - 7.0

*********************************************

pop edi
pop ecx
pop ebx
pop ebp
jmp eax

******************************************

  其实,jmp eax 这地方一载入就是这样的:

用OD载入:

00401000 P> $  B8 487E4800           mov eax,Proj2.00487E48
00401005    .  50                    push eax
00401006    .  64:FF35 00000000      push dword ptr fs:[0]

打开OD的内存转存:


我是在第三段ctrl+s:

         ****************
              pop edi
              pop ecx
              pop ebx
              pop ebp
              jmp eax
         ****************

搜到这:

00487F08     6A 00             push 0
00487F0A     57                push edi
00487F0B     FF11              call [dword ds:ecx]
00487F0D     8BC6              mov eax,esi
00487F0F     5A                pop edx
00487F10     5E                pop esi
00487F11     5F                pop edi
00487F12     59                pop ecx
00487F13     5B                pop ebx
00487F14     5D                pop ebp
00487F15     FFE0              jmp eax             <<<----------oep!
00487F17     0000              add [byte ds:eax],al
00487F19     0000              add [byte ds:eax],al
00487F1B     004C7F 48         add [byte ds:edi+edi*2+48],cl

自然,后面的事不用再说了!如果说你有兴趣可试下灵不灵?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
支持!!!
2005-12-9 13:29
0
雪    币: 288
活跃值: (415)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
支持一下,争取早日脱掉XPR
第一次脱掉一个壳是一件比较开心的事情
虽然只是个很简单的壳
2005-12-9 14:35
0
雪    币: 97697
活跃值: (200734)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
引用“这是我第一次写脱文,也是第一次脱掉一个壳 虽然是个弱的,但我是莱鸟,也应高兴一下”

鼓励你!
2005-12-9 14:40
0
雪    币: 242
活跃值: (163)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
5
哈哈,有回了。多谢各位鼓励!
2005-12-9 14:41
0
雪    币: 255
活跃值: (207)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
我兴奋的时候:
1、第一次用upx -d 脱壳
2、第一次用ollydbg手工脱壳
3、第一次脱xprotector(尚未实现)
2005-12-9 15:00
0
雪    币: 3638
活跃值: (4197)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
7
我一直就兴奋不起来,不会脱壳。
谁让我兴奋一下啊。
2005-12-9 15:30
0
雪    币: 211
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
N久没用过LordPe和ImportREC了;
看到这个贴,试了下,用F7F8都无法直接步过,
于是直接Ctrl+G到465b60,F4,dump.

曾经试着搞过Asprotect的stolen code,现在.......
2005-12-9 17:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢  这是我第一次脱壳   成功 脱了 ,真开心。真是我的启蒙老师呀
2006-2-22 11:08
0
雪    币: 301
活跃值: (300)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
10
支持一下,我现在如果可以顺利脱掉ASPE2.x的的壳子,就也会体会到这种快乐了
2006-2-22 11:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
第一次脱壳就这么好,多做几次就很了不得了。向你学习。
2006-2-22 12:06
0
游客
登录 | 注册 方可回帖
返回
//