让我们举一个在IT世界中随处可见的例子:
我们有一个游戏,例如纸牌游戏,有人制作并发布了一个培训师,因为你的行动始终是' 0'
我如何以编程方式确定哪些地址以及哪些价值" hack"变化?
如果可能的话,哪种方式最好?
我问这个问题是因为有两件事:
答案 0 :(得分:1)
你做不到。一些破坏的尝试可能是设置两个地址然后比较它们(他们将找到另一个地址)。或者他们可以简单地删除你的比较电话。
他们可以改变您用于“以编程方式确定”的任何保护功能,以便始终返回错误结果。他们可以对你的可执行文件做任何事情,所以没办法。
除非你挂钩打开你的进程的内核函数来修改内存。但这也是可以破解的,如果我没有错,你需要立即对你的“保护内核驱动程序”进行数字签名。
还有另一种方法可以在每个正在运行和新生成的进程中加载DLL(这可能会警告有关您的程序是病毒的反病毒),使用该DLL挂钩OpenProcess(如果还有其他替代方法,这也是每个过程中的功能,并检查它是否针对您的程序,如果是,则阻止它。搜索关于功能挂钩。我相信有一种叫做“MS Detour”的东西或类似东西。
然而,游戏甚至不会接近安全。
总而言之,在本地保护您的游戏绝不好。如果您要存储分数或其他内容,则应创建服务器程序,客户端应报告每次移动到服务器。
即使这样,他们也可以创建一个机器人来自动响应服务器。那么你能做的最好就是以某种方式验证它是一个正在玩的人。 (也许验证或比较解决速度与人类的平均值?)