码迷,mamicode.com
首页 > 其他好文 > 详细

第25章:通过修改PE加载DLL

时间:2020-07-27 13:39:40      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:写入   img   执行   tab   注意   功能   src   结构   一加   

前面的代码没有什么特别的意义,了解即可.需要注意的是dummy这段代码.

技术图片

 

 前面的代码主要是为了执行想要的功能,在一加载DLL时就能执行.而dummy()函数是为了保证此DLL文件能够顺利的添加到TextView.exe文件的导入表中(然后由程序在执行时会加载此DLL文件).

PE文件中的IDT(Image_Directory_Table)存储在可选头的后半段.

技术图片

故得地址为:84cc,大小为64.看节区头,可以发现它在第二节区.计算一下: 84CC - 6000 + 5200 = 76CC.

技术图片

14H字节一个结构体.

技术图片

 

第一个IID结构体为Kernel32.dll,   86BC - 6000 + 5200 = 78BC:

技术图片

移动 IID 有三种方式: 1. 查找文件中的空白区域.        2. 增加文件最后一个节区的大小.        3.在文件末尾添加新节区.

首先尝试第一种方法:第二节区的末尾有空余,

技术图片

 

注意修改好以后一定要改相关节区的属性,因为在加载PE文件内存时,PE装载器会修改IAT,写入函数的实际地址.

所以需要给该节区加上可写权限.同时也要修改 Import Directory地址.

之前能成功是因为IAT可选头中,该段地址默认可写,因此也可以只修改IATSIze字段来实现:

技术图片 

同时注意将绑定导入表(提高DLL加载的速度)信息置0,如果不存在本身不影响但如果存在,自己却修改IAT,则会出现错误.

技术图片

第25章:通过修改PE加载DLL

标签:写入   img   执行   tab   注意   功能   src   结构   一加   

原文地址:https://www.cnblogs.com/Rev-omi/p/13383118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!