逆向开发者在开发过程中,可能有不少人遇到这样的一个问题:
在不开游戏的情况下,某些函数可以正常调用和使用。
但是在游戏运行后。该类函数直接失效。
最典型的例子为FPS 和 DNF。
绝大多数检测成熟的游戏,都会屏蔽键鼠类函数的执行,由安全系统所接管,最典型的函数为mouse_event() 函数声明如下
那么有什么办法或者思路来解除这一函数屏蔽呢?答案是有的。
分析:
首先,函数失效,只是针对游戏本身,当游戏最小化之后,函数可以正常调用,说明该保护并不是直接HOOK R0 全局,而是游戏运行后,再去调用HOOK函数。 而微软对内核函数接口开放越来越严格,新出的win10以及新版本的win7系统,想在R0层下HOOK难度也慢慢增大,这也是某些游戏驱动保护,在10系统失效的原因。
确定了屏蔽函数是在游戏程序中调用而不是全局执行,还需确定以下几点:
1、该屏蔽函数是何时执行(如:游戏启动完毕还是游戏开局之后)
2、该屏蔽函数位于何处(如:某个模块被游戏加载之后,函数才失效,即可确定)