-
-
[原创]tersafe的二个致命bug(仅技术讨论请务从事非法活动)
-
-
[原创]tersafe的二个致命bug(仅技术讨论请务从事非法活动)
tersafe的两个hook不能用工具直接恢复的,一个是ntopenxxx和kiattahcprocess(write和read还有shadow里面的可以用工具直接x掉)
但是这两个麻烦的东西,居然都有大bug。。。
看了坛子里面一个老大的的tersafe破文和相关的代码后,看到他在处理ntopenprocess和ntopthread部分,在ObOpenObjectByPointerAddr前hook,绕过后,判断调用者是不是tersafe相关的自己人(就是游戏),选择是回去执行tersafe的代理代码,还是直接调用ObOpenObjectByPointerAddr ,
我在处理中发现了tersafe的一个bug,实际上是不需要这么麻烦处理的
tersafe驱动中搜索ntopenprocess和thread的代码,发现e8,并且调用地址同ObOpenObjectByPointerAddr 的时候,就讲这个e8 call的地址修改成自己的代理函数
然后开启这部分的检查
tersafe在这个搜索和检查过程中有个bug,当找不到这部分的时候,tersafe就不hook了。。并且不检查这部分代码了。。。并且tersafe本身那种要求自己的代理函数调用几次的检查也没有了。。
所以我们没必要在ObOpenObjectByPointerAddr 之前做jmp,然后判断是否合法来做,直接在tersafe驱动启动前,加载自己的驱动,将这部分先改了,就可以不用管了。。。
至于kiattachprocess也是的,tersafe通过获取keattachprocess的地址,然后在ke中搜索ki的调用,进入ki后修改头几个字节,然后jmp,,,那如果搜不到呢。。。哈哈,又没有了。。。
第一个bug已经自己写驱动测试过了,,是可以的,想自己试的,用xuetr也可以试(xuetr也是hook的ntopenxxx的和tersafe同样的地址,如果先开xuetr,那tersafe就傻了。。)
第二个正在写来试试,不过从他驱动逆向代码来看,是可以的。。。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课