击败截图¶
如果你遇到使用截图作为额外证据抓住机器人使用者的检测机制,你很幸运。绕过截图机制很容易:别让你的机器人被看到。
你可以通过保持最小 UI 并且不对游戏客户端做任何明显可区分的改变来破坏这种检测。但如果你的机器人需要 HUD 或其他独特 UI 显示,别担心——你可以鱼与熊掌兼得。只要你能拦截截图代码,你就可以在截图时隐藏你的指纹。
例如,在某些 PunkBuster 版本中,截取截图前会调用 Windows API 函数 GetSystemTimeAsFileTime()。你可以用这个函数上的钩子快速隐藏你的 UI 几秒钟,确保它不被看到:
void onGetSystemTimeAsFileTime(LPFILETIME
systemTimeAsFileTime) {
myBot->hideUI(2000); // 隐藏 UI 2 秒
origGetSystemTimeAsFileTime(systemTimeAsFileTim
e);
}
只需用第一百五十三页「钩子重定向游戏执行」描述的技术钩住 GetSystemTimeAsFileTime(),编写 hideUI() 函数,并在执行恢复前调用 hideUI() 函数。