1、静态修改PE输入表法
准备工作:一个自行编写的MsgDLL.dll,导出了一个Msg()。
修改对象:系统(Windows XP)自带的“记事本”程序notepad.exe。
修改目标:启动notepad.exe时能够加载MsgDLL.dll。
MsgDLL.dll的主要功能是在DllMain中弹出一个MessageBox来展示自己的存在,代码如下。
1 | #include "stdafx.h" |
(1)备份原IID结构
原输入表的RVA为0x7604,它的RawOffset为0x7604 - 0x1000 + 0x400 = 0x6A04,大小为0xC8。
增加一个节,将IID数组复制到空白区域,偏移量是0x10400,如图所示。
(2)在原IID区域构建新IID的OriginalFirstThunk、Name和FirstThunk结构
(3)填充新输入表项的IID结构
根据刚才填充的两个结构和Name的偏移,填写新的IID项,如图所示。
TimeDateStamp这一项我们没有,所以填0。
(4)修正PE文件头的信息
1、修改输入表指向的位置以及大小。
2、修改新区块的属性。
注入成功