[2020]某些垃圾虚拟机级别反作弊绕过 huoji 游戏安全,C/C++,易语言 2020-09-08 这里不点名某个抄了公开hv的反作弊HOOK了openprocess的反作弊. 他们反作弊在openprocess的hook里面使用了类似的判断: ```cpp If(dwProcessId == MydwProcessId) ``` 一行代码绕过: 你用openprocess打开某游戏的时候,pid+1就行了 原理是这样的: https://bbs.pediy.com/thread-248583.htm pid,tid. 其实也是一个EPROCESS ETHREAD地址的索引。pid,tid都是4的倍数 ```cpp 所以: If(dwProcessId == MydwProcessId) 应该改为: #define ID_ALIGN(ProcessId) ((ProcessId) >> 2) if(ID_ALIGN(dwProcessId) == ID_ALIGN(MydwProcessId) ``` 本文由 huoji 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。
以前初学驱动也这样写,后面翻书找到4的倍数解释:
0x00,0x04,0x08,0x10,0x14等等的二进制既然底2位永远为0,那么微软就利用了这两位做一个标志位,用来指示当前句柄值所代表的内核对象到那个表项数组中找到。