老文章——读写进程的一种方法
将进程的页目录写入CR3,变相的进行了进程切换,所以就可以直接读取其他进程的地址空间了。
当然KeStackAttachProcess等函数是可以读取其他进程地址空间的,但是被HOOK之后就不好使了。使用这种方法只需要获取进程的EPROCESS结构,这可以通过PsLookupProcessByProcessId或者为了防止HOOK通过PsSetCreateProcessNotifyRoutine注册一个进程创建回调,保存所有进程的EPROCESS,然后再操作,只不过已经创建的进程不好搞。总之又是鸡生蛋蛋生鸡的问题。
今天在菊爷的提示下重新想了想SetWindowsHookEx,发现即使在win8.1确实可以以普通用户权限下全局钩子然后获取键盘记录和其他消息,这真是出乎意料。然后我觉得好多老的技术还是很有实用价值的,因为windows架构就那个样子了,再升级内核那个烂摊子也还是烂摊子。
还是很伤心的,如果这么弱智的HOOK就可以记录我的键盘,那么Windows的安全措施能干什么呢?这么基础和重要的它都解决不了,真是很失望。还有某些杀软,吹得很厉害,实际上可能真的就是个娱乐工具罢了,网购保镖做得是很华丽,可是连GetMessage钩子都不能防护,有什么用呢?