首页
社区
课程
招聘
[原创]DLL注入技术大全(持续更新,欢迎插眼)
发表于: 2小时前 62

[原创]DLL注入技术大全(持续更新,欢迎插眼)

2小时前
62

最近复习到DLL注入技术,这里特地来探讨一下。

一、远程线程注入(CreateRemoteThread + LoadLibrary)

原理:在目标进程中申请一块内存,写入你的 DLL 路径字符串。然后利用 CreateRemoteThread 在目标进程中启动一个新线程,线程的入口函数直接指向 LoadLibraryA,参数就是你写的路径。

特点:教科书级的注入方式。

缺点:太容易被拦截。反作弊只需要 Hook LoadLibrary 就能当场抓获。



二、消息钩子挂载注入

原理:利用 Windows 系统的消息机制(如键盘按键、窗口激活)。当你为一个窗口安装钩子(WH_KEYBOARD 等)时,系统会自动将你的 DLL 加载到所有符合条件的进程中。

特点:由系统“护送”进入目标,常用于全局监控。

缺点:容易造成系统卡顿,且目标进程必须有窗口和消息循环。

三、DLL劫持注入

又叫做DLL Hijacking,原理:利用 Windows 加载 DLL 的搜索路径优先级。比如游戏需要加载 version.dll,你写一个同名的 DLL 放在游戏根目录下。游戏启动时会优先加载你的 DLL。

技术点:你需要在自己的 DLL 中把原本的函数调用再导回到真正的系统 DLL(转发),否则游戏会崩溃。

特点:不需要启动注入器,随游戏启动。

四、输入表劫持 (IAT Patching / Import Table Injection)


原理:直接修改目标程序的 .exe 文件(静态修改),在它的导入表(Import Table)里强行添加一项你的 DLL 名字。


特点:静态修改,一次成型,永久生效。

五、无模块/手动映射注入


原理:不使用系统 API 加载,而是由注入器模拟操作系统的加载过程(解析 PE、重定位、修复 IAT),直接把 DLL 的裸数据写进内存并运行。


特点:在模块链表里看不见,极其隐蔽。

六、反射式注入

原理:这是 Manual Map 的变种。普通的 DLL 无法自己加载自己,但“反射式 DLL”内部集成了一个精简的加载器函数。你只需要把整个 DLL 丢进目标内存,然后运行那个加载器函数,它会自己把自己“展开”并初始化。


特点:DLL 具有自加载能力,常用于远程渗透。


七、线程上下文劫持注入

原理:先挂起(Suspend)目标进程的一个线程。强行修改该线程的寄存器(如 RIP/EIP),让它跳转到你的 Shellcode(一段启动加载逻辑的代码)去执行,执行完后再跳回来。


特点:不需要创建新线程,直接“夺舍”现有的线程。

八、APC 注入 

原理:向目标进程的线程队列里插入一个异步过程调用(APC)。当线程进入“警觉状态”(Alertable State)时,会自动执行你的代码。












传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回