【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、flyODBG、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――
【脱壳过程】:
有兄弟让看看EncryptPE加壳的DLL,我说新版的就不行了,搞不定的。后来看是EncryptPE V1.2003.5.18旧版加壳的,应该用的是老王老师发布的免费版。呵呵,所以脱了一下,顺便记录过程。
大家可以自己用EncryptPE V1.2003.5.18免费版加个EdrLib.dll看看。
―――――――――――――――――――――――――――――――――
一、避开IAT加密
设置Ollydbg忽略所有的异常选项。用IsDebug 1.4插件去掉Ollydbg的调试器标志。
添加“同时忽略0EEDFADE、C0000008、009B25C、00953D74”异常。
代码:
00877000 60 pushad//进入OD后停在这 00877001 9C pushfd 00877002 64:FF35 00000000 push dword ptr fs:[0] 00877009 E8 79010000 call EdrLib.00877187
代码:
mov eax,edi mov edx,dword ptr ss:[ebp-8] mov dword ptr ds:[eax],edx xor eax,eax
代码:
711A339F 8BC7 mov eax,edi 711A33A1 8B55 F8 mov edx,dword ptr ss:[ebp-8] //改为: mov edx,dword ptr ss:[ebp-4] ★ 正确函数写入 711A33A4 8910 mov dword ptr ds:[eax],edx 711A33A6 33C0 xor eax,eax 711A33A8 5A pop edx 711A33A9 59 pop ecx 711A33AA 59 pop ecx 711A33AB 64:8910 mov dword ptr fs:[eax],edx 711A33AE EB 0A jmp short V1200351.711A33BA
代码:
add ebx,4 mov eax,dword ptr ss:[ebp-4C] add eax,4
代码:
711A43C2 83C3 04 add ebx,4 711A43C5 8B45 B4 mov eax,dword ptr ss:[ebp-4C] 711A43C8 83C0 04 add eax,4 711A43CB 8945 B4 mov dword ptr ss:[ebp-4C],eax 711A43CE 8B03 mov eax,dword ptr ds:[ebx] 711A43D0 85C0 test eax,eax 711A43D2 0F87 39FDFFFF ja V1200351.711A4111 711A43D8 A1 74C71B71 mov eax,dword ptr ds:[711BC774] 711A43DD 8038 00 cmp byte ptr ds:[eax],0 711A43E0 75 1F jnz short V1200351.711A4401 711A43E2 8B45 C4 mov eax,dword ptr ss:[ebp-3C] 711A43E5 83C0 14 add eax,14 711A43E8 8945 C4 mov dword ptr ss:[ebp-3C],eax 711A43EB 8B45 C4 mov eax,dword ptr ss:[ebp-3C] 711A43EE 8378 0C 00 cmp dword ptr ds:[eax+C],0 711A43F2 76 0D jbe short V1200351.711A4401 711A43F4 8B45 C4 mov eax,dword ptr ss:[ebp-3C] 711A43F7 8378 10 00 cmp dword ptr ds:[eax+10],0 711A43FB 0F87 38FCFFFF ja V1200351.711A4039//循环处理IAT 711A4401 33C0 xor eax,eax//此处下断! ★
代码:
mov edx,dword ptr ss:[ebp-24] sub edx,dword ptr ds:[eax+34] mov dword ptr ss:[ebp-54],edx
代码:
711A4428 8B55 DC mov edx,dword ptr ss:[ebp-24] ; EdrLib.00870000 711A442B 2B50 34 sub edx,dword ptr ds:[eax+34]//算是一种比较方式吧 711A442E 8955 AC mov dword ptr ss:[ebp-54],edx 711A4431 8B45 D8 mov eax,dword ptr ss:[ebp-28] 711A4434 8B40 3C mov eax,dword ptr ds:[eax+3C] 711A4437 0345 D8 add eax,dword ptr ss:[ebp-28] 711A443A 8B90 A0000000 mov edx,dword ptr ds:[eax+A0] //[eax+A0]=[008E7D80]=00006000 ★ 这个00006000就是重定位表的RVA!原来放在这里 :-) 711A4440 8955 C8 mov dword ptr ss:[ebp-38],edx 711A4443 8B90 A4000000 mov edx,dword ptr ds:[eax+A4] //[eax+A4]=[008E7D84]=000003B0 ★ 这个000003B0就是重定位表的Size!
代码:
711A4504 83F0 FF xor eax,FFFFFFFF 711A4507 8B55 F0 mov edx,dword ptr ss:[ebp-10] 711A450A 83F2 FF xor edx,FFFFFFFF //EDX=FF78EE36 XOR FFFFFFFF=008711C9 711A450D 2B55 DC sub edx,dword ptr ss:[ebp-24] //EDX=008711C9 ★ 这是什么?呵呵,OEP啦 711A4510 33C2 xor eax,edx 711A4512 0345 AC add eax,dword ptr ss:[ebp-54] 711A4515 8945 FC mov dword ptr ss:[ebp-4],eax 711A4518 EB 13 jmp short V1200351.711A452D
代码:
711A4600 66:C703 0000 mov word ptr ds:[ebx],0//重定位表清0! 711A4605 FF4D E0 dec dword ptr ss:[ebp-20] 711A4608 837D E0 00 cmp dword ptr ss:[ebp-20],0 711A460C 0F8F B6FEFFFF jg V1200351.711A44C8 711A4612 8B45 E8 mov eax,dword ptr ss:[ebp-18]
代码:
mov eax,dword ptr ds:[edx+28] mov dword ptr ds:[ebx+0B0],eax
代码:
7119CF0E 8B42 28 mov eax,dword ptr ds:[edx+28] 7119CF11 8983 B0000000 mov dword ptr ds:[ebx+B0],eax; EdrLib.008711C9
代码:
008711C9 55 push ebp//OEP ★ 008711CA 8BEC mov ebp,esp 008711CC 53 push ebx 008711CD 8B5D 08 mov ebx,dword ptr ss:[ebp+8] 008711D0 56 push esi 008711D1 8B75 0C mov esi,dword ptr ss:[ebp+C] 008711D4 57 push edi 008711D5 8B7D 10 mov edi,dword ptr ss:[ebp+10] 008711D8 85F6 test esi,esi 008711DA 75 09 jnz short EdrLib.008711E5 008711DC 833D 60538700 00 cmp dword ptr ds:[875360],0 008711E3 EB 26 jmp short EdrLib.0087120B
代码:
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ IAT: 00873FF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00874000 1D 51 C4 77 1C 3A C4 77 3E E7 C4 77 CC D2 C4 77 Qw:w>缒w桃w 008740B0 CE 7C E5 77 05 74 E5 77 F9 81 E5 77 EB 41 E4 77 |wtwwAw 008740C0 66 C8 E5 77 3E 18 F6 77 00 00 00 00 00 00 00 00 f儒w>w........ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
代码:
, _/ /| _.-~/ \_ , 青春都一晌 ( /~ / \~-._ |\ `\\ _/ \ ~\ ) 忍把浮名 _-~~~-.) )__/;;,. \_ //' /'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了破解轻狂 `~ _( ,_..--\ ( ,;'' / ~-- /._`\ /~~//' /' `~\ ) /--.._, )_ `~ " `~" " `" /~'`\ `\\~~\ " " "~' ""