|
本人一直研究C++和ring3编程,鲜有接触驱动,但是关注了本论坛有一段时间。由于最近时间空闲且对驱动有一些兴趣,遂想具体研究学习一番,谁曾想注册本论坛账号就不是一帆风顺,期间还麻烦Tesla.Angela好几次,甚是不好意思,在這里表示感谢。
本人驱动经验很少,所以如果有不专业的地放,敬请拍砖。
代码并非全部原创,各种互相参考实验学习。互联网嘛,天下代码一大抄,看你会抄不会抄。
废话不多说,直奔主题。
我做的是监控创建进程,并且实现注入DLL(不知道这算不算内核注入DLL)。
思路:
使用的PsSetCreateProcessNotifyRoutine, PsSetLoadImageNotifyRoutine.
在64系统中,注入64位exe:只需要inlinehook exe启动时必经的一个函数即可(通用性是最重要的)。
注入32位exe:需要OEPhook掉 32位版本的ntdll入口点(关于为什么不能像64位一样直接HOOK 64位的NTDLL,具体原因我也不清楚,哎,论理论知识的重要性)。
亲测 WIN7 X86,X64可用,win10不知何原因启动驱动服务时报错 errorcode:2 文件不存在。暂时没查到原因。
注:此DEMO可以注入到360进程中,但是360的主动防御注入失败,因为他的服务启动比我的驱动早。如果想注入也有办法。我不知道驱动编程对360是不是不算个事。长期在ring3下,我一直把挑战360作为我的乐趣。不喜勿喷。
下载测试,请使用虚拟机建立快照,如因DEMO破坏你的计算机,概不负责。
源码: |
评分
-
查看全部评分
|