C++ c++;在另一个进程中动态更改地址?

C++ c++;在另一个进程中动态更改地址?,c++,security,C++,Security,是否可以更改应用程序中的地址,使应用程序仍能正常工作,但黑客(基于内存读/写)对此应用程序却不能?可能是移动堆栈或其他什么 @更新 我不寻找随机基地址。我正在寻找在运行的应用程序中更改地址的方法,这样应用程序仍然可以工作,但“黑客和机器人”无法读取这部分内存。ASLR不是我想要的(很容易绕过)移动堆栈将非常困难,除非您可以在执行之前返回main。任何作为引用或指针传递到堆栈上变量的变量都不允许移动。在您说“好吧,那么我将动态分配所有内容”之前,现在您遇到了完全相同的问题-您的堆位于一个可预测的位

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

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

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

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

另外,避免持久位置的一种方法是在动态创建和销毁的线程中运行代码——这样,堆栈在短时间内只在一个位置。但当然,这并不能真正阻止一个有技术、有决心想办法绕过你的人。世界上有数以百万计的人可以使用计算机,并且能够“闯入事物”,你不能真正依靠“默默无闻的安全”(使事物复杂化不是安全)


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

移动堆栈是什么意思?你的意思是改变堆栈的内容?更具体地说,问题不清楚请至少包括一些附加信息,如操作系统、程序类型、您尝试搜索的内容等。您可能正在寻找MSVC中的“随机基地址”选项,或者像
地址空间布局随机化这样的技术
移动堆栈是什么意思?
我指的是在应用程序运行时移动整个内存的方法。你是在问程序本身是否可以访问(读写)进程内存的某个部分吗但不是来自使用os系统API的不同进程上的应用程序?@PoiXen-yup!这正是我的意思!