今天在发一个 驱动注入 (高手玩烂的技术 菜鸟拿来学习 学习)
原理如下
SSDK HOOK NtCreateThread (本想带个反汇编引擎 来个 深度 inline hook 无奈水品不够 便放弃
了 )
关于 NtCreateThread 的详细资料 请查询百度(无论是准确性 还是完整性 都比我说的要好)
进程在建立过程中 会调用 NtCreateThread 而 这个时候 新建立的进程 其实已经初始化完毕了 它唯一
欠缺的是没有主线程
我们在这个时候将他拦截下来 使用 ZwAllocateVirtualMemory 为它分配一块内存 通过 KeStackAttach
Process 切换上下文 把我们的shellcode
代码 RtlCopyMemory到 刚分配的空间 修改 Context 结构中 要执行的地址 大致过程就是这样
这里拿注入DLL来做应用 其实可以做很多事情 在进程执行入口地址前 先执行了我们的 shellcode 当然
可以做其他事情 比如......
效果图
非常简陋的 shellcode 代码
驱动调用 直接呼叫 NtCreateThread
第一个参数为 注入DLL字符串指证
第2个参数为 注入DLL字符串长度
第3个参数为 当前API LoadLibraryA 地址
最后一个参数为 100 其他全是0
代码在115网盘