首页
社区
课程
招聘
[讨论]通过修改pe文件注入dll
发表于: 2015-11-21 20:31 9848

[讨论]通过修改pe文件注入dll

2015-11-21 20:31
9848
学习逆向核心原理中一章,有些问题
步骤是
一.编写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直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 204
活跃值: (911)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
2
你改完的程序和DLL呢?
我以前学完PE格式的时候也干过这事
2015-11-21 23:18
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢
//dll.dll
#include "stdio.h"
#include "windows.h"
#ifdef __cplusplus
extern "C"{
#endif

        __declspec(dllexport)void dumy()
        {
                return;
        }
#ifdef __cplusplus
}
#endif

BOOL WINAPI DllMain(HANDLE hModule,
        DWORD DwReason,
        LPVOID lpReserved)
{
        printf("asd");
        getchar();
}
//Project1.exe
void main()
{}
改后回车显示两次asd后报错,上面是文件,vs2013 win10
2015-11-22 07:15
0
雪    币: 204
活跃值: (911)
能力值: (RANK:1324 )
在线值:
发帖
回帖
粉丝
4
改之前的程序也运行不了啊
也许在DllMain里加个判断,if(DLL_PROCESS_ATTACH==dwReason)就好了
2015-11-22 07:39
0
雪    币: 10
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
那个就是个空的,不报错就行;
刚刚改了,还是报错
2015-11-22 08:27
0
游客
登录 | 注册 方可回帖
返回
//