- 注册时间
 - 2021-4-16
 
- 最后登录
 - 2024-9-11
 
- 在线时间
 - 5 小时
 
 
 
 
 
编程入门 
  
	- 龙马币
 - 62 
 
 
 
 
 | 
 
 
前言: 
本注入方案非线程注入。 
要理解本程序的实现过程首先需要了解什么是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。 
 
因为借助Peb->KernelCallbackTable->__fnDWORD实现,所以InjectedDll暂时只能针对32位有窗口程序。 
 
源码下载: 
 
 |   
 
 
 
 |