对PECompact v1.34的手动脱壳
2006-07-03 20:26:02 来源:WEB开发网核心提示: 0030:0040D4A0 4E52454B 32334C45 6C6C642E 49444700 KERNEL32.dll.GDI0030:0040D4B0 642E3233 55006C6C 33524553 6C642E32 32.dll.USER32.dl0030:0040D4C0
0030:0040D4A0 4E52454B 32334C45 6C6C642E 49444700 KERNEL32.dll.GDI
0030:0040D4B0 642E3233 55006C6C 33524553 6C642E32 32.dll.USER32.dl
0030:0040D4C0 4441006C 49504156 642E3233 49006C6C l.ADVAPI32.dll.I
0030:0040D4D0 4547414D 2E504C48 006C6C64 646D6F63 MAGEHLP.dll.comd
0030:0040D4E0 3233676C 6C6C642E 45485300 32334C4C lg32.dll.SHELL32
0030:0040D4F0 6C6C642E 41434A00 2E31474C 006C6C64 .dll.JCALG1.dll.
0030:0040D500 696C7061 6C642E62 00F4006C 4C746547 aplib.dll...GetL
0030:0040D510 45747361 726F7272 01A70000 65766F4D astError....Move
0030:0040D520 656C6946 01160041 50746547 41636F72 FileA...GetProcA
0030:0040D530 65726464 00007373 655201CB 6F436461 ddress....ReadCo
可以看到偏移地址为40D4A0,根据我们对输入表的知识,(具体原理说明可以看看雪教学中的"脱壳高级篇"中的文章,那里面比我说得清楚多了)我们可以搜索内存映象中的字节A0,D4,00,00。(即00D4A0=40D4A0-400000)来确定输入表的位置。下指令
s 30:400000 l ffffffff A0,D4,00,00
7、搜索的结果显示
Pattern found at 0030:0040D00C (0000D00C)
我们用如下指令来定位到输入表的起始位置(当然目前还不能确定就是输入表)
dd 0040D00C-C
如下为数据窗口的显示结果。
0030:0040D000 0000D0C8 00000000 00000000 0000D4A0 ................
0030:0040D010 0000D2B4 0000D1A0 00000000 00000000 ................
0030:0040D020 0000D4AD 0000D38C 0000D1CC 00000000 ................
0030:0040D030 00000000 0000D4B7 0000D3B8 0000D260 ............`...
现在我们来看看到底是否我们要找的输入表。下指令
dd 40D0C8
显示结果如下:
0030:0040D0C8 0000D50A 0000D51A 0000D526 0000D538 ........&...8...
0030:0040D0D8 0000D548 0000D556 0000D564 0000D57A H...V...d...z...
0030:0040D0E8 0000D58C 0000D59E 0000D5B4 0000D5C2 ................
0030:0040D0F8 0000D5D2 0000D5DE 0000D5F4 0000D5FE ................
继续追踪,下指令
db 40D50A
显示结果如下:
0030:0040D50A F4 00 47 65 74 4C 61 73-74 45 72 72 6F 72 00 00 ..GetLastError..
0030:0040D51A A7 01 4D 6F 76 65 46 69-6C 65 41 00 16 01 47 65 ..MoveFileA...Ge
0030:0040D52A 74 50 72 6F 63 41 64 64-72 65 73 73 00 00 CB 01 tProcAddress....
0030:0040D53A 52 65 61 64 43 6F 6E 73-6F 6C 65 41 00 00 31 00 ReadConsoleA..1.
(以上说这么多,只是为了说明找输入表的方法的具体实现过程,原理在各位高手的"脱壳高级篇"已经说得很详细了)
OK,符合输入表的规范。看来这就是我们要找的输入表了。我们还要确定一下输入表的长度,在数据窗口中向下翻页。直到发现大量的0x00字节。确定一下长度为C40字节。(这次就不Dump窗口看了,写到这里我开始怀疑我这篇又臭又长的文章不知道要写多长,大家还没有看着看着睡着了吧 :-) )
更多精彩
赞助商链接