针对作弊的指针

Pointers against cheat

本文关键字:指针      更新时间:2023-10-16

如何保护我的分子类变量值,如键长NH3的反转概率,免受作弊引擎用户等人的侵害(不减慢太多)?

这能防止外部影响吗?

class molecule
{
public:
    molecule()
    {
    ...
    }
protected:
    int *bond_length;
    int *probability;
}

这样更安全吗?

class molecule
{
...
private:
    int *bond_length;
    int *probability;
}

如果以上所有内容都容易受到类似作弊引擎的软件的攻击,那么下面是否合乎逻辑?

class molecule
{
public:
    molecule(){... ... ...}
...
...
    //still public
    int *bond_length_fake;
    int *bond_length;
    int *prob_fake;
    int *prob;
}
...
//somewhere in the program
void thread_real_to_fake(void * molecule_parameters)
{
    int bond_length_backup;
    molecule * param=(molecule *)molecule_parameters;
    while(working)
    {
        if((param->bond_length_fake)!=(param->bond_length))
        {
            param->bond_length_fake=param->bond_length;
        }
    }
    _endthread();
}

好的,这通过使其始终等于真假来保护假货。但是如何保护真正的呢?我可以使用随机指针来获取实际值吗?如果是,我该怎么做?

您无法保护您的计算机免受正在运行的软件的影响。如果有人控制机器,他们可以随意操纵它,这包括修改正在运行的程序的状态。

您可以做的最安全的事情是在单独的、无法访问的服务器上运行程序,并通过网络转发 I/O(例如,转发到浏览器窗口)。

编辑:作为替代方法,您可以将程序的引擎部分作为以单独用户身份运行的服务运行。这提供了一定程度的保护。引擎必须检查提交的用户输入(例如.key笔划)是否以合理的速率进入。这允许您在一定程度上强制实施规则,但不会阻止用户通过操作客户端中的图形呈现来透视墙壁。