源文件在附件中。
脱壳方法如下:
1、OD加载exe文件
00401000 > B8 B0459200 mov eax,GPU-Z.009245B0
00401005 50 push eax
00401006 64:FF35 0000000>push dword ptr fs:[0]
0040100D 64:8925 0000000>mov dword ptr fs:[0],esp ;F8到这里,准备硬件断点
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 GPU-Z.00401080
0040101F 637432 00 arpl word ptr ds:[edx+esi],si
00401023 B5 E5 mov ch,0E5
00401025 A0 5FB88F07 mov al,byte ptr ds:[78FB85F]
0040102A 388E DB53113B cmp byte ptr ds:[esi+3B1153DB],cl
00401030 91 xchg eax,ecx
00401031 8F ??? ; 未知命令
00401032 D094EB 0A505A2E rcl byte ptr ds:[ebx+ebp*8+2E5A500A],1
00401039 4B dec ebx
2、下完毕硬件断点后,F9一次
009245DF 83C4 04 add esp,4
009245E2 55 push ebp
009245E3 53 push ebx
009245E4 51 push ecx
009245E5 57 push edi
009245E6 56 push esi
009245E7 52 push edx
009245E8 8D98 57120010 lea ebx,dword ptr ds:[eax+10001257]
009245EE 8B53 18 mov edx,dword ptr ds:[ebx+18]
009245F1 52 push edx
009245F2 8BE8 mov ebp,eax
009245F4 6A 40 push 40
009245F6 68 00100000 push 1000
009245FB FF73 04 push dword ptr ds:[ebx+4]
009245FE 6A 00 push 0
00924600 8B4B 10 mov ecx,dword ptr ds:[ebx+10]
00924603 03CA add ecx,edx
00924605 8B01 mov eax,dword ptr ds:[ecx]
00924607 FFD0 call eax
3、再次F9次
00924671 5D pop ebp ; 0013FFF0
00924672 FFE0 jmp eax ;地址差别很大,EAX 005A9641 GPU-Z.005A9641
00924674 41 inc ecx
00924675 96 xchg eax,esi
00924676 5A pop edx
00924677 0000 add byte ptr ds:[eax],al
00924679 0000 add byte ptr ds:[eax],al
0092467B 0092 FF315200 add byte ptr ds:[edx+5231FF],dl
00924681 0000 add byte ptr ds:[eax],al
00924683 0002 add byte ptr ds:[edx],al
00924685 0000 add byte ptr ds:[eax],al
00924687 0022 add byte ptr ds:[edx],ah
00924689 0000 add byte ptr ds:[eax],al
0092468B 00B0 465200B0 add byte ptr ds:[eax+B0005246],dh
00924691 76 14 jbe short GPU-Z.009246A7
00924693 0000 add byte ptr ds:[eax],al
00924695 0000 add byte ptr ds:[eax],al
00924697 0000 add byte ptr ds:[eax],al
00924699 0000 add byte ptr ds:[eax],al
4、然后F7进去
005A9641 . E8 02A30000 call GPU-Z.005B3948
005A9646 .^ E9 89FEFFFF jmp GPU-Z.005A94D4
005A964B $ 3B0D F01D7100 cmp ecx,dword ptr ds:[711DF0]
005A9651 . 75 02 jnz short GPU-Z.005A9655
005A9653 . F3: prefix rep:
005A9654 . C3 retn
005A9655 > E9 89A30000 jmp GPU-Z.005B39E3
005A965A $ 8BFF mov edi,edi
005A965C /. 55 push ebp
005A965D |. 8BEC mov ebp,esp
005A965F |. 33C0 xor eax,eax
005A9661 |. 3945 0C cmp [arg.2],eax
005A9664 |. 76 12 jbe short GPU-Z.005A9678
005A9666 |. 8B4D 08 mov ecx,[arg.1]
005A9669 |> 66:8339 00 /cmp word ptr ds:[ecx],0
005A966D |. 74 09 |je short GPU-Z.005A9678
5、用LoadPEDumpe文件
6、ImportREC v1.6F Fix版 ,用这个版本,输入地址001A9641,获取输入函数表。查看函数,导出修复文件
http://bbs.pediy.com/attachment.php?attachmentid=84158&stc=1&d=13833039467,尝试修复数据段。用PEID查看原始文件,得到地址 147800,然后复制这个位置到结尾的数据到修复后的文件。
8、文件无法运行,提示
[attpic=2]
哪位帮忙看看?谢谢。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课