Magic Utilities 2003 脱壳手记 下
2007-01-13 20:14:29 来源:WEB开发网jmp eip
挂起程序,然后到Peditor中dump full。
___________________________________________________________________
下面的工作就是定位输入表了。
用Ultraedit打开dump下来的程序,搜索kernel,位于pec1块的搜索结果如下(事实上,在pec1 section
中有不止一处的kernel,但是其他位置的kernel都不能找到相应的IID->Name):
000950b0h: 74 45 6E 76 69 72 6F 6E 6D 65 6E 74 56 61 72 69 ; tEnvironmentVari
000950c0h: 61 62 6C 65 41 00 4B 45 52 4E 45 4C 33 32 2E 64 ; ableA.KERNEL32.d
000950d0h: 6C 6C 00 00 00 00 47 65 74 4D 65 6E 75 49 74 65 ; ll....GetMenuIte
000950e0h: 6D 49 6E 66 6F 41 00 00 00 00 53 65 74 52 65 63 ; mInfoA....SetRec
000950f0h: 74 00 00 00 44 72 61 77 45 64 67 65 00 00 00 00 ; t...DrawEdge....
00095100h: 46 69 6C 6C 52 65 63 74 00 00 00 00 43 6F 70 79 ; FillRect....Copy
00095110h: 52 65 63 74 00 00 00 00 47 65 74 53 79 73 43 6F ; Rect....GetSysCo
00095120h: 6C 6F 72 00 00 00 53 79 73 74 65 6D 50 61 72 61 ; lor...SystemPara
00095130h: 6D 65 74 65 72 73 49 6E 66 6F 41 00 00 00 44 65 ; metersInfoA...De
再通过这个地址反推IID的location,向上找到的IID数组如下:
00093ea0h: 60 46 09 00 00 00 00 00 00 00 00 00 0E 47 09 00 ; `F...........G..
00093eb0h: 94 06 08 00 68 43 09 00 00 00 00 00 00 00 00 00 ; ?..hC..........
00093ec0h: 80 47 09 00 9C 03 08 00 3C 41 09 00 00 00 00 00 ; €G..?..<A......
这样就得到了输入表的地址:00093ea0。
最后用PeditorD打开dump下来的文件,填入OEP:0005129C(RVA)
Import Table:00093EA0
运行一下,成功!
后记:脱壳中遇到一些不太明白的地方,希望大侠能解答一下:
1.我在载入源程序前把所有的section的characteristics都改成E0000020也不能使Softice在入口点处中断,不知是什么原因。
2.Peditor dump下来的文件是磁盘文件还是内存映象?其IAT是否已被填充为API的入口地址?
3.我手工脱壳以后的文件反汇编没有参考字符串,而用Pe_Scan脱壳后却有字符串。不知如何才能做到。
更多精彩
赞助商链接