-4

是否可以更改应用程序中的地址以使该应用程序仍然可以正常工作,但对该应用程序的黑客攻击(基于内存读/写)不能?也许移动堆栈或其他什么?

@update 我不寻找随机化基地址。我正在寻找在运行的应用程序中更改地址的方法,以便应用程序仍然可以工作,但“黑客和机器人”无法读取这部分内存。ASLR 不是我要找的东西(很容易绕过)

4

1 回答 1

1

移动堆栈将非常困难,除非您可以在执行此操作之前一直返回到 main。任何作为引用或指向堆栈上变量的指针传递的变量都不允许移动。在您说“好吧,那么我将动态分配所有内容”之前,现在您遇到了完全相同的问题 - 您的 HEAP 位于一个可预测的位置(至少在某种程度上是可预测的),因此可以进行修改。当然,即使堆的放置不可预测,您也不能在执行过程中随意移动它,因为您的代码将依赖于指针和对堆中其他数据的引用 - 如果您移动它,您最终不得不重新排列所有这些参考。最后,您仍然会有一些已知的或可以从其他值计算的寄存器或内存位置(例如

我最好的建议是在堆中生成代码,并使用它来并行计算游戏中使用的结果。

此外,避免持久位置的一种方法是在动态创建和销毁的线程中运行代码 - 这样,堆栈仅在一个地方短时间。但是,当然,这并不能真正阻止那些技术娴熟并决心找到保护您的方法的人。世界上有数以百万计的人可以使用计算机并能够“闯入事物”,你不能真正依赖“通过默默无闻的安全”[让事情变得复杂不是安全]。

正确的安全方法是在保存代码的服务器上执行所有必要的计算,并且代码不向公众提供!但是,对于 FPS 游戏来说,这可能不太现实。对于扑克游戏来说,这是非常现实的,尤其是如果你打得好就能赢钱!

于 2013-01-28T23:43:48.360 回答