易语言资源网 - 做最全的易语言资源下载社区
【周六更新】【2021开源大赛(第六届)】全部参赛作品信息 精易论坛授权登录
当前位置:易语言资源网 > C++ > 帖子内容

[驱动注入] 开源映像回调驱动注入源码   [复制链接]

    2022-09-14 08:55:23
    C++
    易语言资源网
    288 次浏览
    来源链接

注入原理源于火绒(大佬逆出来的)

先简单说一下实现原理,一个进程在创建后还有很多工作没有完成,流程大概是:由CreateProcess启动一个进程->加载ndtll->创建主线程->初始化进程结构->加载系统的各种dll->ZwTestAlert->ZwContinue

简单了解了进程创建的大概流程后我们主要关注最后两个函数,这两个函数是由ntdll导出的,但是没有公开,调用完ZwContinue后进程才开始进入下一个线程最后执行main函数,注入原理就是挂钩ZwContinue函数或者ZwTestAlert函数来执行我们的shellcode,怎么挂钩呢?使用核心函数PsSetLoadImageNotifyRoutine创建映像回调来监视ntdll模块的加载。

代码流程如下:

1.创建LoadImage回调

2.使用PsGetProcessImageFileName判断ntdll的加载

3.获取ntdll导出的ZwContinue、LdrLoadDll、RtlInitUnicodeString等函数地址

4.在目标进程申请存放shellcode的内存

5.创建一条系统线程开始hook ZwContinue函数
流程很简洁,这个代码我仅仅花了半小时完成,有很多bug等待着大家优化,比如没有找到释放申请的内存的时机。

按照这个思路也可以hook ZwTestAlert至于shellcode是如何编写的,请看我之前的帖子,你也可以自行阅读我注释的shellcode汇编。


请大家不要对有保护的游戏进行注入,代码花了很短的时间写完,shellcode只是实现了注入,并没有处理dll,有能力的可以加点别的骚操作,比如抹PE头,隐藏内存什么的,注意只支持win10x64,原因请看源码注释。

驱动源码由纯C语言编写,源码我写了详细的注释,我也建议大家用纯C语言写驱动,由于电脑重装了系统,没有下载易语言(网上的全都有毒),所以只有C++的调用,有能力的可以自行解决。

加载驱动注入后,当进程被创建后才会执行注入,注入成功后记得卸载驱动!


注入效果截图:

部分源码截图:



点我下载 (已有 12 次下载)

[错误报告]   上一篇:数独游戏存源码画板制作不闪屏...     下一篇:开源分享之驱动键鼠的硬件USB通讯...