我一直在对 APK 进行一些逆向工程,我发现这些人将 Base64 中的签名存储为类的静态属性,以便他们可以通过比较来验证 APK 的当前签名是否有效。
经过大量研究后,我的问题是:
1) 他们如何计算签名然后将其硬编码到代码中?在他们修改java代码以包含它之后,签名不会改变吗?
2)APK的哪些部分用于计算签名?
好吧,我希望这足够清楚,如果您有任何疑问,请告诉我,我会进行编辑。
谢谢!!
最佳答案
android.content.pm.Signature
是一个命名不当的类。它实际上是签名 key 公共(public)部分的 X.509 证书的编码版本。
请注意,他们的防御基本上毫无意义。也许它会捕获一些缺乏经验或愚蠢的攻击者,但其他人只会更改比较值,作为他们对应用程序进行的任何修改的一部分。
“签名”检查有用的地方是验证其他应用程序的签名 key ,前提是您可能未受影响,但它们可能是重新打包的应用程序。
关于java - 在java代码中包含apk签名以在运行时验证它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43923865/