首页
社区
课程
招聘
[原创]DLL注入学习笔记
2021-6-10 22:58 4927

[原创]DLL注入学习笔记

2021-6-10 22:58
4927

DLL注入

DLL被加载到进程的时候会自动运行DLLMain()函数,可以把想执行的代码放到DLLMain()函数里


DLL的入口函数主要有四种:

  1. DLL_PROCESS_ATTACH:第一次加载DLL时执行

  2. DLL_PROCESS_DETACH:调用FreeLibrary时执行

  3. DLL_THREAD_ATTACH:调用DLL时执行

  4. DLL_THREAD_DETACH:删除DLL时执行


DLL注入主要使用三种方法:

1.创建远程线程CreateRemoteThread()

代码实现主要步骤为:

1.使用OpenProcess()返回获得目标进程的句柄

2.计算DLL的路径长度,并且要加上0结尾,VirtualAllocEx()在目标进程中分配内存,储存dll路径

3.使用WriteProcessMemory()在目标进程的内存中写入数据,dll路径写入目标进程里

4.GetModuleHandle()获取kernel32模块的地址,再使用GetProcAddress()获取模块中LoadLibrary地址(只要dll和目标进程位于同一台主机,那么LoadLibrary的地址就一致)

5.CreateRemoteThread()创建远程线程加载dll,通过dll入口函数DLL_PROCESS_ATTACH执行代码

2.使用注册表AppInit_DLLs

直接在注册表里编辑HKEY_LOCAL_MACHINE\SOFEWARE\Microsoft\Windows NT\CurrentVersion\Windows修改AppInit_DLLs的值,数据为DLL的路径,再把数值数据改为1,只要user32.dll被调用,就会加载到进程

3.消息勾取SetWindowsHookEx()

利用钩子由OS将DLL注入到相应进程

也可以通过修改PE来加载DLL

IMAGE OPTIONAL_HEADER的IMPORT Table RVA就是IDT的RVA

查看IDT是否有足够的空间,一个IID结构体14字节,如果没有足够空间可以考虑把IDT转移到文件的空白区域,也可以增加文件最后一个节区的大小,或者在文件的末尾新增一个节区

主要步骤为:

1.修改导入表的RVA,IMAGE OPTIONAL_HEADER的IMPORT Table RVA

2.删除绑定导入表,IMAGE OPTIONAL_HEADER的BOUND IMPORT TableRVA全改为0

3.创建新的IDT,先复制原IDT,然后在尾部写入新的IID,IID的编写主要分为三个参数:(Name,INT,IAT)RVA

    IAT:ordinal和函数名

    NAME:DLL名

    IAT:可与INT相同

4.修改IAT节区的属性值,.rdata节区头,characteristics添加IMAGE_SCN_MEM_WRITE(80000000),再执行bit or运算,最终属性值变为c0000040即可


DLL卸载

主要目的就是驱使目标进程调用FreeLibrary()

实现步骤主要为:

1.使用CreateToolhelp32Snapshot()获取加载的DLL名称

2.使用OpenProcess()返回获得目标进程的句柄

3.GetModuleHandle()获取kernel32模块的地址,再使用GetProcAddress()获取模块中FreeLibrary地址

4.CreateRemoteThread()创建远程线程调用FreeLibrary()卸载DLL


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

最后于 2021-6-12 19:24 被wx_dopeusa91编辑 ,原因:
收藏
点赞5
打赏
分享
最新回复 (2)
雪    币: 5966
活跃值: (3880)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
pxhb 2 2021-6-11 09:16
2
0
CreateRemoveThread
雪    币: 656
活跃值: (757)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
wx_dopeusa91 2021-6-12 19:21
3
0
pxhb CreateRemoveThread[em_14]

是CreateRemoteThread  疏忽了

最后于 2021-6-12 19:23 被wx_dopeusa91编辑 ,原因:
游客
登录 | 注册 方可回帖
返回