我不熟悉签名文件的概念,到目前为止我也找不到一个令人满意的答案,所以我想我最好问一下:
我想知道的是,当签名一个二进制文件( Android)时,签名工具是否会给文件分配某种校验和,这样当黑客更改了apk文件中的某些内容时,程序会因为校验和不匹配而拒绝启动。Android的签名工具中是否存在这种机制?
我知道当黑客拿到二进制文件时,他可以禁用任何他想要的东西,包括校验和校验。但问题是:Android的签名工具是否首先提供了这种级别或保护?
感谢您的阅读和回复!
发布于 2011-03-24 01:17:29
说“不,他们不能修改你的apk”的答案只对了一半:是的,没有人可以修改你的代码并用你的密钥重新签名,这意味着恶意的黑客不能让修改后的应用看起来像是来自你。但这并不意味着他们不能在用不同的密钥重新签名后修改和运行APK。
他们可以获取你的签名APK,修改它的代码,并用他们自己的密钥重新签名;他们不能将该应用程序作为更新或类似的东西发布,但修改后的自签名APK通常可以由任何用户安装,无论是根用户还是非根用户。
编辑:值得在xda开发人员周围爬行,看看人们在这方面做了什么(一些半合法的,比如修改和重新发布主题APK;其他的要少得多)。像android-apktool这样的工具特别有趣。
另请参阅这些SO问题:
发布于 2011-03-24 01:14:27
Android二进制签名是使用Jarsigner工具完成的,它是标准Java SDK的一部分。使用此工具对jar进行签名只需添加两个文件;一个文件包含jar/应用程序(签名或.sf文件)中每个文件的散列值,另一个文件验证签名文件并标识签名证书(DSA文件)。
因此,检查签名必须包括检查二进制文件的散列是否与提供的值匹配,这将检测对二进制文件的任何更改。是的,Android documentation说系统不会在没有有效签名的情况下安装或运行应用程序。
所以,是的,你可以假设对你的文件进行正确的签名会阻止它在被修改后运行。
发布于 2011-03-24 01:11:35
是的,操作系统必须检查二进制文件的内容是否与签名匹配。否则它将一文不值--有人可以从合法应用程序中获取签名,然后将其粘贴到任何其他二进制文件上。
https://stackoverflow.com/questions/5408841
复制相似问题