知道程序是否已被客户编辑

know if a program has been edited by a client

我有一个服务器可以处理正在使用我的程序的客户端。 我怎么知道客户端(智能客户端)是否已经编辑了我的程序并且没有使用原始程序? (例如,他反汇编了我编辑的程序 & 出于作弊目的编译它)

如果"using your program",你的意思是你的服务器获得的输入来自你分发的东西的未修改版本,你所能做的就是让它变得困难 为谁作弊。你永远无法 100% 确定。

您可以要求随请求一起发送客户端程序校验和,但这可以是虚拟的:它不一定是真正的校验和。

您可以要求进行更复杂的检查,最多 zero-knowledge proof,但您不能确定某些客户端代码是否已干预 运行 您的代码证明,但随后 运行 修改了其他部分的代码。

更糟糕的是,你已经武装了一切,但它仍然必须 运行 在机器上,所以附加程序构建了一个自定义虚拟机来扰乱你的头脑。

相反,您可能需要考虑 "What's good enough?"。一旦您知道了要保护的关键内容,就可以想出一种方法来专门测试这些内容。那将是一个更具体的问题....