java - 在java代码中包含apk签名以在运行时验证它

标签 java android

我一直在对 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/

相关文章:

android - 无法将卡片与 Android Wear 底部对齐

android - Intent 选择器屏幕中自定义项目的回调

android - 远程推送通知和终止的应用程序

java - 当未设置 ‘hibernate.dialect’ 时,对 DialectResolutionInfo 的访问不能为 null

java - BindException 多线程服务器

java - JMapFrame 和 GUI [Java]

android - 如何从一个 Activity 中传递字符串并在另一个 Activity 中将它们显示为 TextView

java - 使用 DAO 模式

java - 3 个字节到整数的示例都不起作用

android - 打开应用程序后 flutter 崩溃