[英]Figuring out programmatically if a Java class was patched?
如果有人修补一类已编译的代码,尤其是在Android中,是否可以通过编程方式解决? 示例:我的建筑物(例如.apk)包含一个PiracyCheck.class类。 是否可以在编译时运行该类的某种“校验和”(由另一类执行)? 我想我可以从中获得任何价值,例如abcdefg。 如果有人修补此类,则校验和将突然变为123456,而不是abcdefg。 我在后端服务器上验证校验和。 如果校验和正确,则继续,否则,中止。 还是有更好的解决方案来实现这一目标?
(btw:如果破解者想要重新打包并为应用程序重新签名,那么我已经很安全了,因为我还检查了签名,但是我敢肯定,任何人都可以通过反编译和编辑字节码本身来绕过此检查,表示不需要辞职,证书也不会更改)。
您可以做一些这样的事情。 但是您不能将它们组合到一个系统中,该系统将阻止某人运行代码的“破解”版本。
是否可以在编译时运行该类的某种“校验和”(由另一类执行)?
如果有可能在编译时生成类的加密校验和,请在服务器端或“ .apk”中或两者中进行记录。
也可以在客户端计算这种校验和。
您无法执行的是强制Android平台或被黑的“ .apk”生成真实的校验和:
我认为Android平台不提供此功能,如果可以,则可以在“有根”设备上进行颠覆。
自然,如果有人麻烦破解您的“ .apk”,他们可以颠覆“ .apk”中的任何“自我校验和”代码以提供原始校验和,而不是实际代码的校验和。
无论哪种方式,您的服务器都会看到它期望的校验和,而不是实际代码的有效校验和。 它将被愚弄。
基本上,如果您需要在有效控制用户的平台上执行代码,则不能阻止用户破坏您的代码。 您所希望的最好的办法就是使具有适当技能的人很难做到这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.