DimoNull Asked:2023-06-01 04:19:12 +0000 UTC2023-06-01 04:19:12 +0000 UTC 2023-06-01 04:19:12 +0000 UTC 为什么在破解常量变量时不会出错? 772 如果我创建一个变量const int i = 0;然后通过更改它i=1;然后我得到一个错误。但是,如果我将程序编译为 exe,并使用作弊引擎或其他调试器更改此常量值,则不会出现任何错误。这是为什么? c++ 1 个回答 Voted Best Answer Acinit 2023-06-01T13:00:20Z2023-06-01T13:00:20Z 来自learn.microsoft.com: 关键字const表明变量的值是常量,并告诉编译器防止程序员更改它。 那些。换句话说,使用带有关键字的变量const可以防止变量在程序的编译级别被更改。 作为这项工作的结果,在内存中为这个变量分配了一个位置。如果你扫描整个申请内存,然后找到这个变量,然后改变这个内存中地址处的值,那么这个变量就会改变(实际上是这样Cheat Engine)。 问题是,如何保护变量不被覆盖? 您可以通过检查相同常量与其他常量来创建数据完整性检查方法 代码混淆,使运行时更难在内存中找到变量 监控外部程序 - 检测进程Cheat engine并阻止程序(最糟糕的方法,因为每个人都可以编写自己的软件来更改内存中的变量,就像这样Cheat engine) 这是我能提供的一小部分。其实内存保护的方法有很多种,这是一个比较深的话题,也是一个完全不同的问题,希望能给大家一个提示……
来自learn.microsoft.com:
那些。换句话说,使用带有关键字的变量
const可以防止变量在程序的编译级别被更改。作为这项工作的结果,在内存中为这个变量分配了一个位置。如果你扫描整个申请内存,然后找到这个变量,然后改变这个内存中地址处的值,那么这个变量就会改变(实际上是这样
Cheat Engine)。问题是,如何保护变量不被覆盖?
Cheat engine并阻止程序(最糟糕的方法,因为每个人都可以编写自己的软件来更改内存中的变量,就像这样Cheat engine)这是我能提供的一小部分。其实内存保护的方法有很多种,这是一个比较深的话题,也是一个完全不同的问题,希望能给大家一个提示……