发点东西敷衍敷衍吧。。
其实在r3下似乎做进程保护没什么强度可言,不过总是可以用来玩玩的:P
现在似乎没有多少人还会去hook kernel32中的函数了,因为大多数(或许有一些是例外的)函数都得从ntdll.dll中过然后sysenter。——至少,我们需要照顾的几个函数是需要过ntdll的 :)
杀进程常见的就是OpenProcess+TerminateProcess,也可以一个一个线程杀(OpenThread+ TerminateThread),所以要挂的函数就是这么4个了,当然。。OpenProcess & OpenThread还有许多方法可以代替,比如直接枚举句柄然后复制过来,这样就有了个源句柄相同的访问权限,并且,这个权限有可能是包含 PROCESS(THREAD)_TERMINATE的,所以我们还需要在DuplicateHandle上下钩,剩下的一些后文再说。
做hook的方法多如牛毛,在此不多说了。主要需要说的就是关于判断函数参数的问题。
注:在hook时,应hook NtOpenProcess(对应OpenProcess) NtOpenThread(对应OpenThread) NtTerminateProcess(对应TerminateProcess) NtTerminateThread(T对应erminateThread) NtDuplicateObject(对应DuplicateHandle),为方便描述,下文中仍然使用kernel32中的函数名。
OpenProcess,OpenThread就不多说了,ProcessId 和ThreadId都是系统范围内唯一的,所以不需要做什么深究。主要是TerminateProcessÿ