什么是真正的行为检测
操作方法
- 01
开始写这些东西只是想说明几件事儿:1.这个世界有矛,必有盾,相反有盾,也必有矛。世界上没有不透风的墙。2.有些东西不是传说中的那么神。3.传说是怎么来的。游戏圈里很多走上快速发财道路的人对行为检测这个说法不陌生,从这个词诞生以来,各种封号统一说法行为检测,然后一直就有人想过各种对抗(什么数值模拟,什么技能模拟),结果一直没啥明显的效果,最后悲情的开始宣传行为检测完全是游戏服务器对于数据分析做出来的。其实真相不是这样的...所谓行为检测,其实可以看作几种检测的组合加上一个简单到可怕的监控策略。首先是程序代码暗桩,不是说这些暗桩 人看不到,只是由于VM的原因,很多人大脑自动忽略了暗桩——在这里重审一下,代码VM化,真的杀伤性强大...曾几何时一个简单的Flag标记和一小段比较坐标移动记录的代码搞残无数高人,还曾几何时一个简单的不可见标记的暗桩搞残无数全屏...由于不知道找不到暗桩,所以开始有人大声宣扬这是行为检测。然后是神秘信息通信动态检测,这里的神秘信息很多,有进程,有窗体,有各种各样的东西(cpuid,mac,bios,硬盘,系统版本,安装过的软件等等一个不能少)这些东西拿来检测什么呢?主要是判定多开,多账户同一机器登录等等,甚甚至有的会上传未知进程和运行模块的文件等等东西...而这一切都可以是一段随时随地到达机器上的shellcode模样的东西(某公司使用的是明文lua脚本,某某公司使用抽象代码——自带解释器??),于是由于进行逆向分析的人员没有长期监控研究,所以发现不了这种动态检测,于是被XX后又有一些不愿意继续被坑下去的人就开始加入大叫行为检测的行列。最后是一个策略,这个策略就是不进行即时处理,比如一个检测发现问题了,可以等3天后把检测出问题的机器上登录过检测出的问题的帐号统一封号,或者干脆第二天把与检测到的帐号发生交易行为最多的帐号封号...于是又有人大叫行为检测。说这些到底有木有真正的行为检测,其实是有的,但是基本不多见,也没几个真的大规模应用(自己猜想服务器负担吧~~)这里开始想说说检测code是怎么写的。这里不讨论进程,窗体这些常见信息的检测。假设被检测的东西已经完美突破各种暗桩,各种ws的扫描。本篇就先来一个日了无数纯CALL模型的辅助的检测吧。下面每篇再多讲一些~关键性的代码很简单服务器发个请求XX检测的包过来本地返回下面代码计算的数据代码:DWORD GetInputAwayTime(){ LASTINPUTINFO lpi; lpi.cbSize = sizeof(lpi); GetLastInputInfo(&lpi); return DWORD((GetTickCount()-lpi.dwTime)/1000);}作用就是计算键盘,鼠标,手柄这类设备有多少秒不操作了~~这个代码是有很多变形的,比如使用IdleUIGetLastInputTime这个api,或者通过设备钩子记录最后输入时间(有的游戏甚至用驱动去记录的...)服务器根据你的操作离开时间长短和进行了那些不可能离开操作的事情来判断...