易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

【首发】利用KernelCallbackTable实现内核帮你注入Dll   [复制链接]

    2022-06-27 10:28:40
    模块控件源码
    易语言资源网
    3482 次浏览
    来源链接

前言:

  • 本注入方案非线程注入。
  • 要理解本程序的实现过程首先需要了解什么是KernelCallbackTable。

实现过程:

  • 首先利用NtQueryInformationProcess获取进程Peb。
  • 然后向进程写入ShellCode。
  • 接着将Peb->KernelCallbackTable->__fnDWORD改写为写入的ShellCode地址。
  • 向程序窗口发送重画消息,此后win32k.sys会处理消息,并且使用KeUserModeCallback从R0切换到R3并且调用ntdll!KiUserCallbackDispatcher,KiUserCallbackDispatcher接着会根据ApiNumber调用KernelCallbackTable中的函数,此时KernelCallbackTable->__fnDWORD已经被修改,导致程序调用LoadLibraryA实现Dll的注入。
  • 实现结果:
  • ShellCode已经编写好,调用第一次时自动恢复KernelCallbackTable,InjectedDll在调用完成后会立刻释放ShellCode。

PS:

  • 因为借助Peb->KernelCallbackTable->__fnDWORD实现,所以InjectedDll暂时只能针对32位有窗口程序。


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

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
InjectedDll.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
KernelCallbackTableInjected.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:传参取通用型 类型和值并返回通用型值...     下一篇:【Etw系列】对系统删除文件操作进行监听...