签署应用程序是否可以防止篡改文件?

wwy*_*wyt 14 android

我不熟悉签名文件的想法,到目前为止我找不到满意的答案,所以我想我最好问:

我想知道的是当签署二进制文件(对于Android)时,签名工具是否为文件分配了某种校验和,以便当黑客在apk文件中更改某些内容时,程序将拒绝启动,因为校验和不会不配.Android的签名工具中是否存在此机制?

好吧,我理解当黑客拥有二进制文件时,他可以禁用任何他想要的东西,包括校验和检查.但问题是:Android的签名工具是否首先提供此级别或保护?

感谢您的阅读和回答!

Yon*_*lan 9

说"不,他们无法修改你的apk"的答案只有一半左右:是的,没有人可以修改你的代码并用你的密钥辞职,这意味着恶意破解者无法使修改后的应用程序看起来像它实际上是来自你.但这并不意味着他们在用不同的密钥重新签名后无法修改和运行APK.

他们可以使用您签名的APK,修改其代码,并使用自己的密钥将其自行重新签名; 他们不能将该应用程序作为更新或类似的东西发布,但修改后的自签名APK通常可由任何用户安装,无论是否.

编辑:值得爬行xda开发人员,看看人们在这方面做了什么(一些半合法的,如修改和重新发布主题APK;其他更少).像android-apktool这样的工具特别有趣.

另见这些SO问题:


Jac*_*son 5

Android二进制签名是使用Jarsigner工具完成的,Jarsigner工具是标准Java SDK的一部分.使用此工具对jar进行签名只需添加两个文件; 一个包含jar /应用程序中每个文件的散列值(签名或.sf文件),另一个用于验证签名文件并标识签名证书(DSA文件).

因此,检查签名是否必然涉及检查二进制文件的哈希值是否与提供的值匹配,这将检测对二进制文件的任何更改.是的,Android文档说系统不会在没有有效签名的情况下安装或运行应用程序.

所以是的,您可以假设正确签名文件将阻止它在被更改后运行.