3 回答

TA贡献1862条经验 获得超6个赞
有办法做到吗?
不。
(至少没有官方的、可移植的方式。当然,您可以修改二进制文件并更改例如数据或 BSS 段,但这很困难,依赖于操作系统,并且不能解决您的问题,因为它与外部文件具有相同的问题:您可以保留原始可执行文件并重新开始。有些事情根本无法从技术上解决。)

TA贡献1841条经验 获得超3个赞
这是您尝试执行的操作(不是写入可执行文件)的解决方案,该解决方案将击败文件的随意复制。
一种可能的方法是定期将请求计数和当前系统时间写入文件。该文件甚至不需要加密 - 您只需要生成数据的哈希值(例如使用 SHA2)并使用私钥对其进行签名,然后附加到文件中。
然后,当您(重新)启动服务时,使用您的公钥读取并验证文件,并检查自写入文件的时间以来是否已经过去太久。请注意,安装时必须写入一些初始文件,并且您的服务需要持续运行 - 只允许短暂重新启动。您还可能会验证该时间不是将来的时间,因为这表明有人试图规避系统。
当然,这种方法存在一些问题,例如客户端摆弄系统时间,甚至调试代码以查找私钥和其他可能的密钥。希望这些措施足以起到威慑作用。此外,如果服务或系统关闭很长一段时间,则需要某种手动干预。

TA贡献1772条经验 获得超5个赞
如果您的其余 API 在您的控制范围内,并且是您要货币化的部分,那么您肯定会在此时过滤许可的可能是某种证书身份验证或 API 密钥,然后您可以保留并依赖该 API您可以控制的一面,然后无论它是在平面文件还是数据库等中都没关系,因为您可以控制它。
- 3 回答
- 0 关注
- 214 浏览
添加回答
举报