【问题标题】:Determining what memory/values a remote application accesses/changes?确定远程应用程序访问/更改的内存/值?
【发布时间】:2013-02-26 21:13:22
【问题描述】:

让我们举一个在 IT 界众所周知的例子:

我们有一个游戏,例如纸牌,有人为此制作并发布了一个训练器,你的动作总是“0”。

如何以编程方式确定“hack”更改了哪些地址和哪些值?

如果可能的话,最好的方法是什么?

  • 在游戏中[注入/加载我自己的 dll?]
  • 通过我自己的进程拦截黑客和目标进程之间的流量?

我问这个问题是因为两件事:

【问题讨论】:

    标签: c++ c windows memory memory-management


    【解决方案1】:

    你不能。一些失败的尝试可能是设置两个地址,然后比较它们(尽管他们会找到另一个地址)。或者他们可以简单地删除您的比较电话。

    他们可以更改您用来“以编程方式确定”的任何保护功能,以始终返回错误结果。他们可以对你的可执行文件做任何事情,所以没有办法。

    除非您挂钩打开进程以修改内存的内核函数。但这也是易碎的,如果我没记错的话,你现在需要对你的“保护内核驱动程序”进行数字签名。

    还有另一种方法,您可以在每个正在运行和新生成的进程中加载​​ DLL(这可能会提醒防病毒软件您的程序是病毒),使用该 DLL 挂钩 OpenProcess(如果有其他替代方案,那也是)在每个进程中起作用并检查它是否针对您的程序,如果是,则阻止它。搜索函数挂钩。我相信有一种叫做“MS Detour”的东西。

    而且,游戏甚至不会接近安全。

    总而言之,在本地保护您的游戏没有任何好处。如果您要存储分数或其他内容,您应该创建一个服务器程序,客户端应该向服务器报告每一次移动。

    即便如此,他们也可以创建一个机器人来自动响应服务器。那么你能做的最好的事情就是以某种方式验证它是一个人在玩。 (也许是验证码或将解决速度与人类平均水平进行比较?)

    【讨论】:

    • 那么逆向工程问题呢?例如,如果我想从培训师那里获得地址并制作自己的更好版本? (避免 NIH 综合症)
    • 这并没有回答他的实际问题,更多的是对他提出这个问题的原因的评论。
    • hm DLL 的想法听起来非常适合逆向工程培训师,IDA + HexRays 并没有表现得非常好......在我的一生中。我不是 asm 人嘿嘿。
    • Can't upvote lol ;> 使用了所有选票。无论如何等待更多答案,太早确定最终答案:p
    • @GamErix 当然,等等。我已经很久没有对这个主题进行任何研究了,我只记得我希望没有 OpenProcess 函数。也许我忘记了一些事情。
    猜你喜欢
    • 2011-02-06
    • 2016-05-21
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多