压缩与脱壳-脱壳高级篇 上
2007-01-12 20:11:51 来源:WEB开发网核心提示: 来到偏移A00处,我们就看到被称为IMAGE_IMPORT_DESCRIPTORs(IID)的东东,压缩与脱壳-脱壳高级篇 上(2),它用5个字段表示每一个被调用DLL的信息,最后以Null结束,所以我们估计这个程序调用了2个DLL,甚至我可以打赌,(IID) IMAGE_IMPORT_D
来到偏移A00处,我们就看到被称为IMAGE_IMPORT_DESCRIPTORs(IID)的东东,它用5个字段表示每一个被调用DLL的信息,最后以Null结束。
********************************************************
(IID) IMAGE_IMPORT_DESCRIPTOR的结构包含如下5个字段:
OriginalFirstThunk, TimeDateStamp, ForwarderChain, Name, FirstThunk
OriginalFirstThunk
该字段是指向一32位以00结束的RVA偏移地址串,此地址串中每个地址描述一个输入函数,它在输入表中的顺序是不变的。
TimeDateStamp
一个32位的时间标志,有特殊的用处。
ForwarderChain
输入函数列表的32位索引。
Name
DLL文件名(一个以00结束的ASCII字符串)的32位RVA地址。
FirstThunk
该字段是指向一32位以00结束的RVA偏移地址串,此地址串中每个地址描述一个输入函数,它在输入表中的顺序是可变的。
**************************************************************
好了,你有没有理解?让我们看看我们有多少IID,它们从偏移A00处开始
3C30 0000 / 0000 0000 / 0000 0000 / 8C30 0000 / 6430 0000
{OrignalFirstThunk} {TimeDateStamp} {ForwardChain} {Name} {First Thunk}
5C30 0000 / 0000 0000 / 0000 0000 / 9930 0000 / 8430 0000
{OrignalFirstThunk} {TimeDateStamp} {ForwardChain} {Name} {First Thunk}
0000 0000 / 0000 0000 / 0000 0000 / 0000 0000 / 0000 0000
每三分之一是个分界,我们知道每个IID包含了一个DLL的调用信息,现在我们有2个IID,所以我们估计这个程序调用了2个DLL。甚至我可以打赌,你能推测出我们将能找到什么。
更多精彩
赞助商链接