一种PE文件地址定位系统的制作方法

文档序号:19879065发布日期:2020-02-08 06:46阅读:来源:国知局

技术特征:

1.一种pe文件的地址定位系统,其特征在于:该系统包括系统定位模块和自我定位模块;所述系统定位模块用于展示在所述pe文件正常载入后,由操作系统完成变量和函数的地址定位的过程,其包括pe文件基本信息模块、重定位表模块、导入表模块和导出表模块;自我定位模块用于实现用户自行完成定位,包括变量定位模块和函数地址定位模块;所述变量定位模块包括基于call指令的定位模块;所述函数地址定位模块包括基于返回地址的定位模块、基于seh的定位模块和基于peb的定位模块。

2.根据权利要求1所述的pe文件的地址定位系统,其特征在于:所述pe文件基本信息模块具体包括:pe总体结构图、dos头部信息、pe头部信息、节表信息、节数据信息、rva和文件偏移地址转换;

其中,可对rva和文件偏移地址之间转换进行在线测试。

3.根据权利要求1所述的pe文件的地址定位系统,其特征在于:所述重定位表模块被配置为展示在pe文件载入过程中需要修正的变量地址,其包括全局变量、静态变量和部分局部变量;所述重定位表的展示模块首先显示重定位的地址总页数、每页包含的地址项数以及每页的rva值,并可通过公式计算出重定位表项在pe文件中的具体位置,并得到该位置的反汇编代码。

4.根据权利要求1所述的pe文件的地址定位系统,其特征在于:所述导入表模块被配置为包括:展示导入目录表、导入名字表和导入地址表;其中所述导入目录表显示当前pe文件导入的动态链接库dll;导入名字表显示从所述动态链接库dll中导入的函数;所述导入地址表用于显示导入的动态链接库dll中的函数的具体地址;所述导出表模块被配置为显示导出目录表、导出地址表、导出名字表和导出序号表的信息;所述导出目录表展示导出的动态链接库dll的名字、导出目录表的起始序号、导出函数的总数;所述导出地址表展示各个函数在pe文件中代码的起始地址;所述导出名字表展示pe文件导出的各个函数的名字,以便其它文件按名字导入;所述导出序号表展示pe文件导出的各个函数的序号。

5.根据权利要求1所述的pe文件的地址定位系统,其特征在于:基于call指令的定位模块被配置为首先展示pe文件静态反汇编的代码,然后利用call指令求出默认装载地址和实际装载地址之间的差距值,最后利用该差距值对反汇编得到的代码中变量的地址进行修正,即可得到所述变量的地址,并可结合所述pe文件的内存空间地址进行正确性验证。

6.根据权利要求1所述的pe文件的地址定位系统,其特征在于:基于返回地址的定位模块被配置为首先以流程图的形式给出某个应用程序启动的基本流程,并提供用户文件选择接口;用户通过该接口选定某个待测试的pe文件;系统随后启动该文件,并在启动过程中设置相应的断点,用户可观察到此时cpu各个寄存器值、堆栈值、以及指定位置的内存值;用户可借助手动变换的功能完成kernel32.dll基地址的定位。

7.根据权利要求1所述的pe文件的地址定位系统,其特征在于:在所述pe文件被装载到内存中后,在执行第一条指令前,其堆栈栈顶处存放的是kernel32.dll中exitthread函数的地址;利用exitthread函数的地址向下搜索即可查询到kernel32.dll的基地址。

8.根据权利要求1所述的pe文件的地址定位系统,其特征在于:所述基于seh的定位模块被配置为在seh链表的末端,定位异常处理机制的函数地址,该函数处于kernel32.dll中,找到该函数的地址后即可找到kernel32.dll的基地址。

9.根据权利要求1所述的pe文件的地址定位系统,其特征在于:所述基于peb的定位模块被配置为在进程环境块peb中首先查找其中的ldr链表;所述ldr链表包括加载顺序模块链表、内存顺序模块链表、初始化顺序模块链表;在所述顺序模块链表、所述内存顺序模块链表、所述初始化顺序模块链表中查找kernel32.dll所在节点和该节点中的kernel32.dll的基地址。

10.根据权利要求6-9任一项所述的pe文件的地址定位系统,其特征在于:所述函数地址定位模块还包括被配置为根据所述kernel32.dll的基地址定位到kernel32.dll导出表的地址,在导出表中寻找到loadlibrary和getprocaddress函数的地址,再利用这两个函数的地址装载目标函数对应的动态链接库dll,装载完成以后即可得到目标函数的实际内存地址。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1