360比赛第3题-我的解法
原文:https://www.pediy.com/kssd/pediy10/79051.html
这题比较简单,大牛们不愿意发,我来发一下我的解法。
第3题注册表保护挑战题
驱动加载后,创建一个内核态线程( driver-created thread)
线程的执行体为:
该线程的作用是通过不断的循环,来创建HKEY_LOCAL_MACHINE\System\360game这个键值,并没有其他的保护删除的措施。
根据题目要求“程序只能运行于用户态,不能以任何形式直接执行RING0代码或修改RING0的内存”;那么我们只有在RING3下将上述的StartRoutine线程挂起,然后就可以直接删除了。
原理很清楚,实现就比较简单了,先找到系统的system进程,再找到其中的StartRoutine线程,然后将其挂起,之后将可以直接删除HKEY_LOCAL_MACHINE\System\360game这个键值了,详细实现见代码。