每个程序、甚至是不同版本的同一个程序,都有“特征”这一说法。那么“特征”在外挂与反外挂领域,有什么用呢?
首先是“第三方”领域,特征可以用来定位基址,偏移,call等等。甚至可以用来定位“动态crc”,这里的动态crc指的是正常手段无法断到,或者无法被定位的代码段。这个时候可以将整个模块内存拷贝出来,进行一个特征搜索。
同样,在反外挂领域,“特征”也功不可没,在这里举两个例子:
例子一:
某游戏外挂,对游戏进行注入了dll,实现了某些功能,而作者非常狡猾,加了壳或者每次加载Dll都会打乱头部特征,抹除pe等等。这个时候,安全系统应该如何对其进行特征呢?这个时候就需要找到对游戏进行读写内存的第三方call,进行一个特征定位。
反外挂突破口推荐为最常见的人物坐标。不管是FPS,还是RPG,几乎绝大部分外挂,都要对其进行读取,通过一系列算法写出自动打怪,或者自动瞄准之类的功能。而安全人员,可以在人物坐标上下断点,查看是否有非游戏自身代码,对人物坐标进行访问,抓到访问代码后,顺藤摸瓜,可对三方程序的函数进行一个特征定位,让“误查”的可能性降到最低。
这里以QQ的代码为例子,随便找一个CALL,假设该CALL是第三方外挂功能,应该如何定位他? 如下图:
首先,该函数位于Mail.dll模块中,而非主模块。那么该函数的地址