• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

PE表头-关于导入表的计算


Recommended Posts

我们使用01Editor来观察任何标准节目,比如笔记本notepad.exe。

在节NTHeader中导入DataDirArray

b54f5ggojmr3779.png

我们得到了

RVA:进口表的7604H。

虽然记录在VritualAddress字段中,但该值是RVA。

那么如何获得导入表呢?

确定RVA所在的路段,获取该路段的路径地址。

计算RVA的ViatualAddress与RVA所在路段的偏移值。

计算偏移RVA所在段的PointerToRawData,得到导入表的位置。

第一步,我们要判断RVA所处的节的位置,这个过程是

swouxi3ttid3780.png

确定SectionHeader节点的VirtualAddress+SizeofRawData大于或等于RVA。

当一个节点建立后,RVA就属于这个部分。

在本文中,下标为0的sechitonheaders [0]属于第一节。

第二步,计算偏移值

偏移值是RVA虚拟地址

在本文中,答案是肯定的

7604h-1000h=6604h

第三步 计算文件位置

offset PointerToRawData是文件位置。

6604h 400h=6A04h

该值是导入的表的结构值。

eeff1uykadd3781.png

那么怎么计算用的是什么函数呢?

我们来计算一下INT的算法。

etp2v5olmpe3782.png

我们以INT为例,它是导入名称表的缩写。意思是导入了什么函数。

OriginalFirstThunk字段的值是RVA,它指向一个按名称导入的结构。在这个结构中有两个字段。第一个字段是固有数,长度为两个字节。第二个是字段是一个名称数组,长度是一个位数组。

那么,如何通过名称获得这个导入的结构呢?

或者重复上述计算导入表的过程。

判断RVA的1段=0段

2偏移值=7990h-1000h=6990h

3计算文件位置=6990h 400h=6D90h

我们跳转到位置6d90,这个位置的值指向按名称导入的结构,所以我们要重复上面的计算过程=《 7A7A-1000 400=6E7A》

eo0une4mbd33783.png

这样,我们就完成了计算。

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now