-
-
[原创]对EXE文件导入表添加一个新的dll和对应的函数名
-
发表于:
2022-4-8 11:21
7387
-
[原创]对EXE文件导入表添加一个新的dll和对应的函数名
闲来无事,最近项目中要求对某个进程文件进行静态导入表的hook,于是想到采用对原有EXE文件的PE格式进行改写,将要被EXE调用的dll和导出函数直接写入EXE的导入表中。
代码只是demo,不足之处请见谅~
1.PE文件导入表的结构简单介绍
实际来看一下我们EXE的导入表,如下图,0x100c就是我们导入表的虚拟地址,其大小是0x38
使用PE工具,将0x100c的虚拟地址转换为文件偏移地址后为FOV:0x20C
通过文件偏移定位到0x20c处,查看文件内容如下:
根据_IMAGE_IMPORT_DESCRIPTOR结构体的内容,可知:一个导入表描述符占:5*sizeof(DWORD)的大小,末尾是一个全零的导入表描述符。
FirstThunk的RVA=0x00001044,Name的RVA=0x00001034
2.下面说一下如何添加新的导入表到EXE中
1)将旧文件读到内存中
2)添加新section的表头
3)将旧导入表拷贝到新的section中
4)在新的section中,接着旧的导入表描述符写入新的导入表描述符
5)修正新PE的imagesize
6)修正新PE的导入表虚拟地址和FOV地址
7)写入新文件中
代码地址:https://github.com/maomingxu/PE_import-_adder
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课