-
-
[讨论]通过修改pe文件注入dll
-
发表于:
2015-11-21 20:31
9849
-
学习逆向核心原理中一章,有些问题
步骤是
一.编写dll
其中
1注意要写
extern "C"{
#endif
__declspec(dllexport)void Z11()
{
return;
}
#ifdef __cplusplus
}
#endif
至少有一个导出函数
2在dllmain函数中写要实现的功能
二.修改pe文件
步骤:
1.找到IMPORT Directory Table(在可选头第二个有地址)
2.观察后面是否可以添加dll
3.如果不行,在IDT所在节区最后面,观察是否有null(一般都有)
4.将刚才找到的IDT覆盖到空白区域(注意从节区头中查看节区的有效范围,有的空白区域不被读取)
5.IDT是IID结构体数组,最后是一个数组是NULL,每个数组0x14,将要添加的dll的IID信息从最后一个IID开头开始写起。
6.在要添加的IID附近写
A、DLL名字
B、hint+函数名称
C、“hint+函数名称”的地址AddressOfData(写两个,INT和IAT各一个)
7、IID中INT和IAT写AddressOfData存放空间的地址(就是地址的地址)
NAME写DLL名字存放空间的地址
8、可选头中修改IDT的地址和大小
注意上面的地址都是写内存空间的,注意用节区头信息换算。
9、添加IDT节区可读属性0x80000000,因为创建IAT需要
10、删除bound_import_table,可选头里有
我写的不直观,这是书上的http://pan.baidu.com/s/1jGjNAAE
dllmain中的函数可以执行(比如弹个对话框),但是为什么修改后程序本身自己不能正常运行?“无法正常启动0xc0000142”,不知道为什么,希望大家能帮帮
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课