c – 如何在运行时检查程序代码的更改

你好开发者,

假设我有一个程序需要服务器通过网络授予他的授权.显然,在我的代码中的某些时候,会有类似的东西:

if (serverResponse == expectedResponse){
    //Continue as the authorized user
}

这个系统有一个非常非常不可能的弱点.如果有人要实际修改可执行文件并将if的代码(我假设是某种分支指令)更改为代码,那么它总是分支到true-case.有没有办法从我的程序中检测到这样的修改?

对我来说,这听起来像一个心理学家检查自己的理智.如果这是不可能的,怎么办呢?像Punkbuster这样的软件如何检查游戏代码的操作?

我想这可能是非常相关的,我的这个程序是用C语言编写的,并用GCC编译器编译.

解决方法:

这里的诀窍是不要依赖简单的if语句.正如你所说,那些可以对代码进行逆向工程的人很容易避开这种情况.相反,您应该使用从服务器返回的值来实现程序的某些重要功能.例如,来自服务器的响应可以用作解密客户端上的一些重要数据的密钥.对于逆向工程师而言,这将更难以规避.

上一篇:Visual Studio Code for mac


下一篇:php – 访问控制和XHR请求