脱壳练习(难度中下)
给大家来个脱壳练习,PolyCrypt PE的壳,难度中等以下,难度不是很大有兴趣的练习一下.
我加的是98记事本.脱好的可以在下面简单的写一下步骤.
看看是否有好办法来脱,呵呵
脱文我一段时间后再发.
说明一下:如果可以,尽量不要用ESP定律,不然就没什么意思了. 倒没人挺你,我挺你! 壳王发挥了~~趁机学习下 一时间把卡巴密码忘记了,一下载卡巴就报毒,不能下载..............
这东西估计我也不会脱,.....到这里等待高人写脱文................... 首先来说下这个壳,他的int3就是一个陷阱,所以我们每次都要跳过他,这个壳我们还要记住,执行向下的跳转,打断向上的跳转,我们每次打断向上跳转时尽量选择用F4运行到所选,而每次跳过inr3时,我们都用f2下断,接着shift+f9去跳过,这个不得不说一下,这个程序一定要一步一根桩的走,不要图快速,那样会出错误的那怕是单步一下都不要直接跳过,避免报错,我试过几次都是直接报错的,一定要一步一步的来
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D00D >60pushad //OD载入程序
0040D00EE8 EDFFFFFF call unpackme.0040D000//打开内存镜象ait+m
0040D013- EB 80 jmp short unpackme.0040CF95
0040D015F5cmc
0040D0163E:F5 cmc
0040D018A0 50F53891 mov al,byte ptr ds:
0040D01D4Cdec esp
━━━━━━━━━━━━━━━━━━━━━━━━━━
在00401000处下F2设置访问中断,接着shift+f9
内存映射,项目 19
地址=00401000
大小=00004000 (16384.)
物主=unpackme 00400000
区段=.text
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D0A48B10mov edx,dword ptr ds: //程序停在了这里
0040D0A633C0xor eax,eax//接着开始单步F8走起
0040D0A864:8B40 30mov eax,dword ptr fs:
0040D0AC0FB658 02 movzx ebx,byte ptr ds:
0040D0B00ADBor bl,bl
0040D0B20F85 B2030000 jnz unpackme.0040D46A
0040D0B88B40 0C mov eax,dword ptr ds:
0040D0BB8B70 1C mov esi,dword ptr ds:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D222 /74 15 je short unpackme.0040D239//这个je跳向下面的int3
0040D224 |C3retn//走到这里时,我们要特别注意啦
0040D225 |CCint3//因为一个接一个的int3指令开始多起来
0040D226 |60pushad
0040D227 |8D95 296E4000 lea edx,dword ptr ss:
0040D22D |52push edx
0040D22E |50push eax
0040D22F |51push ecx
0040D230 |53push ebx
0040D231 |FF95 DD6B4000 call dword ptr ss:
0040D237 |61popad
0040D238 |C3retn
0040D239 \CCint3//上面的je跳到了这里
0040D23A8D85 0F624000 lea eax,dword ptr ss://我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D2402B85 4D6D4000 sub eax,dword ptr ss:
0040D24683E8 13 sub eax,13
0040D2498985 516D4000 mov dword ptr ss:,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D25A /0F84 8D000000 je unpackme.0040D2ED
0040D260 |CCint3//这里又碰上了该死的int3
0040D261 |8B9D 516D4000 mov ebx,dword ptr ss: //我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D267 |8B87 596D4000 mov eax,dword ptr ds:
0040D26D |03D8add ebx,eax
0040D26F |8B8F 5D6D4000 mov ecx,dword ptr ds:
0040D275 |B8 40000000 mov eax,40
0040D27A |E8 A7FFFFFF call unpackme.0040D226
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2AC66:AD lods word ptr ds:
0040D2AECCint3//这里又碰上改死的int3
0040D2AF66:AB stos word ptr es://我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D2B183FA 12 cmp edx,12
0040D2B47C 04 jl short unpackme.0040D2BA
0040D2B6^ E2 DD loopd short unpackme.0040D295
0040D2B8EB 04 jmp short unpackme.0040D2BE
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2EAF3:AA rep stos byte ptr es:
0040D2ECCCint3//这里又碰上改死的int3
0040D2ED8B95 516D4000 mov edx,dword ptr ss: //我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D2F38BB5 416D4000 mov esi,dword ptr ss:
0040D2F903F2add esi,edx
0040D2FBCCint3//这里又碰上改死的int3
0040D2FC8B46 0C mov eax,dword ptr ds://我们在这里f2下断,接着shift+f9,然后取消断点继续单步
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D31653push ebx
0040D317FF95 D96B4000 call dword ptr ss:
0040D31DCCint3//这里又碰上改死的int3
0040D31E8985 356D4000 mov dword ptr ss:,eax //我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D324C785 3D6D4000 0>mov dword ptr ss:,0
0040D32ECCint3//这里又碰上改死的int3
0040D32F8B95 516D4000 mov edx,dword ptr ss: //我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D3358B06mov eax,dword ptr ds:
0040D3370BC0or eax,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D339 /75 04 jnz short unpackme.0040D33F //这个jnz跳过了那该死的int3我们就不用管啦
0040D33B |8B46 10 mov eax,dword ptr ds:
0040D33E |CCint3//这里又碰上改死的int3
0040D33F \03C2add eax,edx
0040D3410385 3D6D4000 add eax,dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D36403DAadd ebx,edx
0040D36683C3 02 add ebx,2
0040D369CCint3//这里又碰上改死的int3
0040D36A81E3 FFFFFF0F and ebx,0FFFFFFF//我们在这里f2下断,接着shift+f9,然后取消断点继续单步
0040D37053push ebx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D3ED^\E9 3CFFFFFF jmp unpackme.0040D32E//这个跳转是向上的,我们要打断他直接在避开int3的地方f2下断,shift+f9打断他
0040D3F2CCint3 //这里又碰上改死的int3
0040D3F383C6 14 add esi,14 //我们在这里f2下断,接着shift+f9,这样就打断两向上的jmp和int3
0040D3F68B95 516D4000 mov edx,dword ptr ss:
0040D3FC^ E9 FBFEFFFF jmp unpackme.0040D2FC//这个jmp时,我们就要用F4运行到所选的方法啦,让他运行到下一行
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D40E8B85 396D4000 mov eax,dword ptr ss:
0040D4140385 516D4000 add eax,dword ptr ss:
0040D41A8985 2B664000 mov dword ptr ss:,eax
0040D4208B0424mov eax,dword ptr ss:
0040D42364:67:A3 0000 mov dword ptr fs:,eax
0040D42883C4 08 add esp,8
0040D42B5Dpop ebp
0040D42C9Dpopfd
0040D42D61popad
0040D42E68 CC104000 push unpackme.004010CC //此时这里push把我们的oep压栈啦
0040D433C3retn //这里就是飞向我们的OEP啦
━━━━━━━━━━━━━━━━━━━━━━━━━━
004010CC55push ebp //我们的光明之颠oep
004010CD8BECmov ebp,esp
004010CF83EC 44 sub esp,44
004010D256push esi
004010D3FF15 E0634000 call dword ptr ds: ; kernel32.GetCommandLineA
004010D98BF0mov esi,eax
004010DB8A00mov al,byte ptr ds:
004010DD3C 22 cmp al,22
004010DF75 13 jnz short unpackme.004010F4
004010E146inc esi
004010E28A06mov al,byte ptr ds:
004010E484C0test al,al 接下来在说下我在单步跟时,跟到的断点的应用吧,在我们单步跟时,我发现如下3个段点比较有用,分别为
bp GetModuleHandleA
bp LoadLibraryA
bp GetProcAddress
但是我试了下,只有第2个只需要运行一次,而且是离得最近的,好现在我们继续OD载入程序
由于断点的运用都是一模一样的,所以我也就演示其一就好
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D00D >60pushad//OD载入
0040D00EE8 EDFFFFFF call unpackme.0040D000//在命令行下bp LoadLibraryA
0040D013- EB 80 jmp short unpackme.0040CF95 //接着shift+f9运行
0040D015F5cmc //此时程序会卡住一分钟左右,当然适机器而论,我这里卡住30秒左右
0040D0163E:F5 cmc
0040D018A0 50F53891 mov al,byte ptr ds:
0040D01D4Cdec esp
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C801D77 >8BFFmov edi,edi//第一次程序断在了这里
7C801D7955push ebp
7C801D7A8BECmov ebp,esp
7C801D7C837D 08 00cmp dword ptr ss:,0
7C801D8053push ebx
7C801D8156push esi
7C801D8274 14 je short kernel32.7C801D98
7C801D8468 C0E0807C push kernel32.7C80E0C0 ; ASCII "twain_32.dll"
7C801D89FF75 08 push dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C801D77 >8BFFmov edi,edi//第二次程序断在了这里
7C801D7955push ebp //大家一定注意到啦,还是停在一样的位置
7C801D7A8BECmov ebp,esp
7C801D7C837D 08 00cmp dword ptr ss:,0
7C801D8053push ebx
7C801D8156push esi
7C801D8274 14 je short kernel32.7C801D98
7C801D8468 C0E0807C push kernel32.7C80E0C0 ; ASCII "twain_32.dll"
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C801D77 >8BFFmov edi,edi //第三次程序断在了这里
7C801D7955push ebp//大家还会说还是一样的位置,其实他的变化在我们的堆栈窗口,没有在这里
7C801D7A8BECmov ebp,esp //此时我们ait+f9返回到用户代码
7C801D7C837D 08 00cmp dword ptr ss:,0
7C801D8053push ebx
7C801D8156push esi
7C801D8274 14 je short kernel32.7C801D98
7C801D8468 C0E0807C push kernel32.7C80E0C0 ; ASCII "twain_32.dll"
7C801D89FF75 08 push dword ptr ss:
7C801D8CFF15 9C13807C call dword ptr ds:[<&ntdll._strcmpi>]; ntdll._stricmp
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D31DCCint3 //真是壮士为杰身先死,又停在了该死的int3上
0040D31E8985 356D4000 mov dword ptr ss:,eax//在这里f2下断,shift+f9运行,接着单步F8
0040D324C785 3D6D4000 0>mov dword ptr ss:,0
0040D32ECCint3 //这里又是该死的int3
0040D32F8B95 516D4000 mov edx,dword ptr ss://在这里f2下断,shift+f9运行,接着单步F8
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D339 /75 04 jnz short unpackme.0040D33F//这个jnz跳过了该死的int3所以我们不用管继续走
0040D33B |8B46 10 mov eax,dword ptr ds:
0040D33E |CCint3 //这里又是该死的int3
0040D33F \03C2add eax,edx; unpackme.00400000
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D36683C3 02 add ebx,2
0040D369CCint3 //这里又是该死的int3
0040D36A81E3 FFFFFF0F and ebx,0FFFFFFF //在这里f2下断,shift+f9运行,接着单步F8
0040D37053push ebx
0040D371FFB5 356D4000 push dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D3ED^\E9 3CFFFFFF jmp unpackme.0040D32E//这个跳转是向上的,我们要打断他直接在避开int3的地方f2下断,shift+f9打断他
0040D3F2CCint3 //这里又碰上改死的int3
0040D3F383C6 14 add esi,14 //我们在这里f2下断,接着shift+f9,这样就打断两向上的jmp和int3
0040D3F68B95 516D4000 mov edx,dword ptr ss:
0040D3FC^ E9 FBFEFFFF jmp unpackme.0040D2FC//这个jmp时,我们就要用F4运行到所选的方法啦,让他运行到下一行
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D40E8B85 396D4000 mov eax,dword ptr ss:
0040D4140385 516D4000 add eax,dword ptr ss:
0040D41A8985 2B664000 mov dword ptr ss:,eax
0040D4208B0424mov eax,dword ptr ss:
0040D42364:67:A3 0000 mov dword ptr fs:,eax
0040D42883C4 08 add esp,8
0040D42B5Dpop ebp
0040D42C9Dpopfd
0040D42D61popad
0040D42E68 CC104000 push unpackme.004010CC //此时这里push把我们的oep压栈啦
0040D433C3retn //这里就是飞向我们的OEP啦
━━━━━━━━━━━━━━━━━━━━━━━━━━
004010CC55push ebp //我们的光明之颠oep
004010CD8BECmov ebp,esp
004010CF83EC 44 sub esp,44
004010D256push esi
004010D3FF15 E0634000 call dword ptr ds: ; kernel32.GetCommandLineA
004010D98BF0mov esi,eax
004010DB8A00mov al,byte ptr ds:
004010DD3C 22 cmp al,22
004010DF75 13 jnz short unpackme.004010F4
004010E146inc esi
004010E28A06mov al,byte ptr ds:
004010E484C0test al,al 3个段点比较有用,分别为
bp GetModuleHandleA
bp LoadLibraryA
bp GetProcAddress
哈哈,又学了个方法! 刚看了下zapline兄第的脱文,便又有一脱法,随便写下脱文,但是同样记住需要f4运行到所选和f2下断,接着shift+f9跳过int3指令
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D00D >60pushad//OD载入
0040D00EE8 EDFFFFFF call unpackme.0040D000//f8开始单步走
0040D013- EB 80 jmp short unpackme.0040CF95 /一直漫长的F8直接到他跑到系统领空
0040D015F5cmc
0040D0163E:F5 cmc
0040D018A0 50F53891 mov al,byte ptr ds:
0040D01D4Cdec esp
0040D01E15 4CF54258 adc eax,5842F54C
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D07790nop
0040D0788D85 90624000 lea eax,dword ptr ss:
0040D07E50push eax
0040D07F8DBD AD664000 lea edi,dword ptr ss:
0040D08557push edi
0040D08664:8B11 mov edx,dword ptr fs:
0040D08952push edx
0040D08A64:8921 mov dword ptr fs:,esp
0040D08D8909mov dword ptr ds:,ecx//程序到这里时会跑到系统领空去
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C92EAF351push ecx //现在我们来到系统领空,ait+f9返回到程序代码
7C92EAF453push ebx
7C92EAF5E8 C78C0200 call ntdll.7C9577C1
7C92EAFA0AC0or al,al
7C92EAFC74 0C je short ntdll.7C92EB0A
7C92EAFE5Bpop ebx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D0A48B10mov edx,dword ptr ds: //ait+f9返回到程序代码第一次
0040D0A633C0xor eax,eax
0040D0A864:8B40 30mov eax,dword ptr fs:
0040D0AC0FB658 02 movzx ebx,byte ptr ds:
0040D0B00ADBor bl,bl
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D23A8D85 0F624000 lea eax,dword ptr ss://ait+f9返回到程序代码第二次
0040D2402B85 4D6D4000 sub eax,dword ptr ss:
0040D24683E8 13 sub eax,13
0040D2498985 516D4000 mov dword ptr ss:,eax
0040D24F8BB5 556D4000 mov esi,dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2618B9D 516D4000mov ebx,dword ptr ss: //ait+f9返回到程序代码第三次
0040D2678B87 596D4000mov eax,dword ptr ds:
0040D26D03D8 add ebx,eax
0040D26F8B8F 5D6D4000mov ecx,dword ptr ds:
0040D275B8 40000000mov eax,40
0040D27AE8 A7FFFFFFcall unpackme.0040D226
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2AF66:ABstos word ptr es://ait+f9返回到程序代码第四次
0040D2B183FA 12cmp edx,12//此时在这里f2下断,接着shift+f9
0040D2B47C 04jl short unpackme.0040D2BA//好啦,继续漫长的f8
0040D2B6^ E2 DDloopd short unpackme.0040D295
0040D2B8EB 04jmp short unpackme.0040D2BE
0040D2BA42 inc edx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2E332C0 xor al,al
0040D2E5B9 00000000mov ecx,0
0040D2EAF3:AArep stos byte ptr es:
0040D2ECCC int3//这里又是该死的int3
0040D2ED8B95 516D4000mov edx,dword ptr ss://在这里f2下断,shift+f9运行,接着单步F8
0040D2F38BB5 416D4000mov esi,dword ptr ss:
0040D2F903F2 add esi,edx
0040D2FBCC int3 //这里又是该死的int3
0040D2FC8B46 0Cmov eax,dword ptr ds://在这里f2下断,shift+f9运行,接着单步F8
0040D2FF0BC0 or eax,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D31653 push ebx
0040D317FF95 D96B4000call dword ptr ss:
0040D31DCC int3 //这里又是该死的int3
0040D31E8985 356D4000mov dword ptr ss:,eax//在这里f2下断,shift+f9运行,接着单步F8
0040D324C785 3D6D4000 00>mov dword ptr ss:,0
0040D32ECC int3 //这里又是该死的int3
0040D32F8B95 516D4000mov edx,dword ptr ss://在这里f2下断,shift+f9运行,接着单步F8
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D339 /75 04 jnz short unpackme.0040D33F//这个jnz跳过了该死的int3所以我们不用管继续走
0040D33B |8B46 10 mov eax,dword ptr ds:
0040D33E |CCint3 //这里又是该死的int3
0040D33F \03C2add eax,edx; unpackme.00400000
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D36683C3 02 add ebx,2
0040D369CCint3 //这里又是该死的int3
0040D36A81E3 FFFFFF0F and ebx,0FFFFFFF //在这里f2下断,shift+f9运行,接着单步F8
0040D37053push ebx
0040D371FFB5 356D4000 push dword ptr ss:
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D3ED^\E9 3CFFFFFF jmp unpackme.0040D32E//这个跳转是向上的,我们要打断他直接在避开int3的地方f2下断,shift+f9打断他
0040D3F2CCint3 //这里又碰上改死的int3
0040D3F383C6 14 add esi,14 //我们在这里f2下断,接着shift+f9,这样就打断两向上的jmp和int3
0040D3F68B95 516D4000 mov edx,dword ptr ss:
0040D3FC^ E9 FBFEFFFF jmp unpackme.0040D2FC//这个jmp时,我们就要用F4运行到所选的方法啦,让他运行到下一行
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D40E8B85 396D4000 mov eax,dword ptr ss:
0040D4140385 516D4000 add eax,dword ptr ss:
0040D41A8985 2B664000 mov dword ptr ss:,eax
0040D4208B0424mov eax,dword ptr ss:
0040D42364:67:A3 0000 mov dword ptr fs:,eax
0040D42883C4 08 add esp,8
0040D42B5Dpop ebp
0040D42C9Dpopfd
0040D42D61popad
0040D42E68 CC104000 push unpackme.004010CC //此时这里push把我们的oep压栈啦
0040D433C3retn //这里就是飞向我们的OEP啦
━━━━━━━━━━━━━━━━━━━━━━━━━━
004010CC55push ebp //我们的光明之颠oep
004010CD8BECmov ebp,esp
004010CF83EC 44 sub esp,44
004010D256push esi
004010D3FF15 E0634000 call dword ptr ds: ; kernel32.GetCommandLineA
004010D98BF0mov esi,eax
004010DB8A00mov al,byte ptr ds:
004010DD3C 22 cmp al,22
004010DF75 13 jnz short unpackme.004010F4
004010E146inc esi
004010E28A06mov al,byte ptr ds:
004010E484C0test al,al 在各位牛人面前小小补充一下
先下LoadLibraryA 3次,再下GetProcAddress,返回,可以看到取API地址的地方0040D370 53 push ebx
0040D371 FFB5 356D4000 push dword ptr ss:
0040D377 FF95 C26E4000 call dword ptr ss: ; 1
0040D37D 80BD 326E4000 0>cmp byte ptr ss:,1
0040D384 75 5E jnz short unpackme.0040D3E4
0040D386 3B85 0D6C4000 cmp eax,dword ptr ss:
0040D38C 75 08 jnz short unpackme.0040D396
0040D38E 8D85 40674000 lea eax,dword ptr ss:
0040D394 EB 4E jmp short unpackme.0040D3E4
0040D396 3B85 1D6C4000 cmp eax,dword ptr ss:
0040D39C 75 08 jnz short unpackme.0040D3A6
0040D39E 8D85 026A4000 lea eax,dword ptr ss:
0040D3A4 EB 3E jmp short unpackme.0040D3E4
0040D3A6 3B85 ED6B4000 cmp eax,dword ptr ss:
0040D3AC 75 08 jnz short unpackme.0040D3B6
0040D3AE 8D85 726A4000 lea eax,dword ptr ss:
0040D3B4 EB 2E jmp short unpackme.0040D3E4
0040D3B6 3B85 D16B4000 cmp eax,dword ptr ss:
0040D3BC 75 08 jnz short unpackme.0040D3C6
0040D3BE 8D85 256B4000 lea eax,dword ptr ss:
0040D3C4 EB 1E jmp short unpackme.0040D3E4
0040D3C6 3B85 F16B4000 cmp eax,dword ptr ss:
0040D3CC 75 08 jnz short unpackme.0040D3D6
0040D3CE 8D85 566B4000 lea eax,dword ptr ss:
0040D3D4 EB 0E jmp short unpackme.0040D3E4
0040D3D6 3B85 F96B4000 cmp eax,dword ptr ss:
0040D3DC 75 06 jnz short unpackme.0040D3E4
0040D3DE 8D85 F26A4000 lea eax,dword ptr ss:
0040D3E4 8907 mov dword ptr ds:,eax
0040D3E6 8385 3D6D4000 0>add dword ptr ss:,4
0040D3ED^ E9 3CFFFFFF jmp unpackme.0040D32E
用D看下地址,大概是这个API要加密
0040D9D57C80B741kernel32.GetModuleHandleA
0040D9D97C802446kernel32.Sleep
0040D9DD7C801D7Bkernel32.LoadLibraryA
0040D9E17C801AD4kernel32.VirtualProtect
0040D9E57C8106D7kernel32.CreateThread
0040D9E97C80C0F8kernel32.ExitThread
0040D9ED7C81CB12kernel32.ExitProcess
0040D9F17C801A28kernel32.CreateFileA
0040D9F57C80B56Fkernel32.GetModuleFileNameA
0040D9F97C831EDDkernel32.DeleteFileA
0040D9FD7C809BE7kernel32.CloseHandle
0040DA017C801812kernel32.ReadFile
0040DA057C80BB41kernel32.lstrcmpiA
0040DA097C80FDCDkernel32.GlobalAlloc
0040DA0D7C80FCCFkernel32.GlobalFree
0040DA117C8286EEkernel32.CopyFileA
0040DA157C810B17kernel32.GetFileSize
0040DA197C810E27kernel32.WriteFile
0040DA1D7C80934Akernel32.GetTickCount
0040DA217C821982kernel32.OpenFile
0040DA257C810C2Ekernel32.SetFilePointer
把0040D384 /75 5E jnz short unpackme.0040D3E4
改为0040D384 /EB 5E jmp short unpackme.0040D3E4
就可以跳过了
重新来过,先LoadLibraryA 一次,在ctrl+g 到0040D384 修改代码并运行到此,再f2在text段下断点就到oep了 好好好好好好好
页:
[1]
2