-
-
[原创]手脱UPX加密壳及修复IAT表
-
发表于:
2008-3-28 20:39
20000
-
首先声明:本人是一个地地道道的菜鸟,尤其在脱壳方面更是菜得不行,本文的目的旨在探寻一种更好的方式,高手见笑了。恳请各位高手看了之后,能够给予指点,万分感激。菜鸟们来一起相互学习,交流经验吧!
目标软件:http://bbs.pediy.com/showthread.php?t=61809&highlight=UPX
使用工具:OllyDbg, IATRebulid V1.02
一、PEiD查壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
刚一看到这个信息,心中暗喜,UPX的壳,以为小菜一碟,用ESP定律脱之,OEP处代码如下:
005D9E18 55 PUSH EBP
005D9E19 8BEC MOV EBP,ESP
005D9E1B 83C4 F0 ADD ESP,-10
005D9E1E 53 PUSH EBX
005D9E1F B8 18955D00 MOV EAX,WishGJ.005D9518
005D9E24 E8 FFD4E2FF CALL WishGJ.00407328
00DB047E F8 CLC
00DB047F 93 XCHG EAX,EBX
00DB0480 68 AB4546E8 PUSH E84645AB
00DB0485 812C24 A50266B0 SUB DWORD PTR SS:[ESP],B06602A5
00DB048C 93 XCHG EAX,EBX
00DB048D 813424 2FF6604B XOR DWORD PTR SS:[ESP],4B60F62F
00DB0494 C3 RETN
0012FF70 007DB77F /CALL 到 VirtualProtect 来自 WishGJ.007DB779
0012FF74 005E3000 |Address = WishGJ.005E3000
0012FF78 00004000 |Size = 4000 (16384.)
0012FF7C 00000040 |NewProtect = PAGE_EXECUTE_READWRITE
0012FF80 007DD7B6 \pOldProtect = WishGJ.007DD7B6
007DB897 . 8907 MOV DWORD PTR DS:[EDI],EAX ; 这里就是往5E32B8地址处写入数据
007DB899 . 83C7 04 ADD EDI,4
007DB89C . 8B85 6B260000 MOV EAX,DWORD PTR SS:[EBP+266B]
007DB8A2 . EB 01 JMP SHORT WishGJ.007DB8A5
007DB8A4 > 40 INC EAX
007DB8A5 > 8038 00 CMP BYTE PTR DS:[EAX],0 ; 得到下一个API函数名称
007DB8A8 .^ 75 FA JNZ SHORT WishGJ.007DB8A4
...
003F03B6 43 72 65 61 74 65 46 69 6C 65 41 00 43 6C 6F 73 CreateFileA.Clos
003F03C6 65 48 61 6E 64 6C 65 00 00 78 32 5E 00 47 65 74 eHandle..x2^.Get
003F03D6 4B 65 79 62 6F 61 72 64 54 79 70 65 00 4C 6F 61 KeyboardType.Loa
003F03E6 64 53 74 72 69 6E 67 41 00 4D 65 73 73 61 67 65 dStringA.Message
003F03F6 42 6F 78 41 00 43 68 61 72 4E 65 78 74 41 00 00 BoxA.CharNextA..
003F0406 8C 32 5E 00 52 65 67 51 75 65 72 79 56 61 6C 75 ?^.RegQueryValu
...
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!