android签名

Android签名机制

99封情书 提交于 2019-12-14 23:48:48
装载请标明出处,维权必究: https://www.cnblogs.com/tangZH/p/12040927.html 首先我们在as中双击apk,出现apk的分析界面,然后选中保存签名相关文件的文件夹: 一:签名文件: 1、MANIFEST.MF :保存了所有其他文件的SHA-1并base64编码后的值 2、CERT.SF : SHA1-Digest-Manifest的值,这个值就是MANIFEST.MF文件的SHA-1并base64编码后的值。 后面几项的值是对MANIFEST.MF文件中的每项再次SHA1并base64编码后的值。 将上一个文件的某一项取出,比如: Name: assets/BookCategoryConfig SHA1-Digest: u5YLUiucukHRhO/xAqnzbnCb6cU= 加两个\r\n,保存文件,再SHA1并base64编码便可得到。 3、CERT.RSA: 包含了公钥信息和发布机构信息。它把之前生成的 CERT.SF文件, 用私钥计算出签名, 然后将签名以及包含公钥信息的数字证书一同写入 CERT.RSA 中保存。CERT.RSA是一个满足PKCS7格式的文件。 Name”属性,其值就是该文件在apk包中的路径。 二、签名过程 CERT.RSA文件生成: 它会把前面生成的 CERT.SF文件用私钥计算出签名,

关于安卓移动端apk安装签名问题

喜欢而已 提交于 2019-12-10 05:50:57
签名 签名是什么 Android系统在安装Apk的过程中,会对Apk进行签名校验,校验通过后才能安装成功。如果想要深入理解签名的,可以自行百度查看一下。 如何获取签名 可以通过系统默认的签名进行获取,获取系统的默认签名方法 keytool -list -v -keystore debug.keystore 通过在cmd中输入这段代码即可显示获取证书指纹 自定义签名,首先也是进入到存放keystroe的文件夹中,使用签名 keytool -list -v -keystore xxx -keypass xxx xxx可以修改为自己想要的密钥 如何获取apk文件中的签名 首先apk的文件是分两种情况,一种是apk本身就没有签名,一种是打包的时候已经给签名了。这样的话想要获取apk的签名,需要以下的步骤 // 首先,需要对apk文件后序改为zip // 打开后,对要把里面的META-INF文件拿出来 // 打开cmd,进入到META-INF文件所在路径,输入以下命令 keytool -printcert -file CERT.RSA // 即可获取当前apk的签名. 获取apk文件中的包名 对于apk文件中,签名和包名都是对apk进行一个标识认证的东西 如果要获取包名,页只需要一条命令即可获取 aapt dump badging xxxx.apk xxx需要相对应的改为名称 来源:

Android studio打包签名apk的bug们

六眼飞鱼酱① 提交于 2019-12-10 01:24:08
先吐槽一句,AndroidStudio真心是我碰壁最多的软件,也不知道怎么这么多障碍找上我了。。。 用as打包apk网上有很多教程,比如 这位博主 提到的方法,也是最正常简单的方式。但是! 列举一下遇到的各种问题吧。 JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore jhy-release-key.jks -destkeystore jhy-release-key.jks -deststoretype pkcs12” 迁移到行业标准格式 PKCS12 解决 :我是没管这个warning的,因为我试了它提示的keytool命令,但是出现了getlength什么的新错误,所以干脆不改了。 使用以上链接中步骤打包后没有签名,提示jar not signed巴拉巴拉 解决 :从这里开始我就没再用AS了,简直坑我。。就使用命令行的方式吧,轻松快捷: 在build完之后 :(1)生成签名文件的命令: keytool -genkey -v -keystore 签名文件.jks -keyalg RSA -keysize 2048 -validity 10000 -alias 别名(随便起但是要记住) 之后需要填一些信息,可以随便填但是至少要填一个才行。 (2)对build之后的apk进行签名: jarsigner -verbose

APK的Platform签名的权限

淺唱寂寞╮ 提交于 2019-12-07 19:39:06
方法一:需要在Android系统源码的环境下用make来编译: 在应用程序的 AndroidManifest.xml 中的 manifest 节点中加入 android:sharedUserId="android.uid.system" 这个属性 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行 使用mm命令来编译,生成的apk就有修改系统时间的权限了。 方法二: 同上,加入android:sharedUserId="android.uid.system"这个属性。 使用eclipse编译出apk文件,但是这个apk文件是不能用的。 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。 (这一步我跳过了(原本是无意的,后来发现下面也有提到),结果一样可以) 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,首先找到密钥文件,在Android源码目录中的位置 是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。然 后用Android提供的Signapk工具来签名,signapk的源代码是在"build\tools\signapk"下,用法为"signapk platform

ionic 打包报错[ERROR] An error occurred while running cordova prepare (exit code 1):

被刻印的时光 ゝ 提交于 2019-12-06 12:33:53
最近同事做了个angular项目,因为要离职,所以项目我就来接手了,用ionic打包app,然后无数配置的坑就等着我了~~~ 环境安装 1.nodejs 因为自己刚接触做angular项目,就更新到了最新的版本 注意:之前一个网友说自己安装版本5.7,尽量不要安装太新的版本,因为可能会出现兼容性问题,一开始本人安装的是6.+的版本,后来出现问题的,马上换回5.7的,问题就不会出现了。 2.JDK 下载安装jdk,我这里装的版本是1.8,(切记要和自己电脑的位数要一致 32/64,不然打包过程可能会出问题) jdk官网下载地址: https://www.oracle.com/technetwork/java/javase/overview/index.html ,下载好后默认安装完成。 bug解决办法:jdk之前安装了最新版本13.0.1 ,结果打包的时候一直出这个错,最后解决办法:把13.0.1卸载掉,安装低版本,1.8.0,有效解决问题 配置环境变量:(我的电脑——属性——高级系统设置——环境变量——系统变量) 新建系统环境变量 JAVA_HOME,路径指向jdk的安装目录,如:C:\tools\Java\jdk1.8.0_151; 新建系统环境变量CLASS_path,路径: %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

用SignApk.jar对APK进行签名

自作多情 提交于 2019-12-06 10:28:08
  对apk签名需要使用SignApk.jar和签名文件。可以使用Android源码获取,若没有源码,可以在这下载: SignApk.jar 。(包含了SignApk.jar和签名文件和批处理文件) 1 SignApk.jar SignApk.jar是安卓源码包中的一个签名工具,代码位于Android源码目录下的/build/tools/signapk/SignApk.java文件中。可以编译生成SignApk.jar。 编译生成SignApk.jar步骤:   ①进入/build/tools/signapk/文件夹   ②执行命令: mm   ③在out/host/linux-x86/framework/目录找到signapk.jar。 2 签名文件   Android源码目录/build/target/product/security/中找到platform.pk8 platform.x509.pem等签名文件,把platform.pk8 与platform.x509.pem 拷贝出来。  签名文件也可直接下载,下载地址:https://android.googlesource.com/platform/build/+/donut-release/target/product/security/。 3 使用SignApk.jar进行签名 PS

android 权限管理和签名 实现静默卸载

房东的猫 提交于 2019-12-05 19:45:31
为了实现静默卸载, 学了下android的安全体系,记录如下 最近在做个东西,巧合碰到了sharedUserId的问题,所以收集了一些资料,存存档备份。 安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。 通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样. 对于一个APK来说,如果要使用某个共享UID的话,必须做三步: 1、在Manifest节点中增加android:sharedUserId属性。 2、在Android.mk中增加LOCAL_CERTIFICATE的定义。 如果增加了上面的属性但没有定义与之对应的LOCAL_CERTIFICATE的话,APK是安装不上去的。提示错误是:Package com.test.MyTest has no signatures that match those

Android签名机制介绍:生成keystore、签名、查看签名信息等方法

回眸只為那壹抹淺笑 提交于 2019-12-05 11:26:50
Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。 升级App 用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示。 权限检查 我曾在Android Permission权限机制的具体使用一文中提过,对于申请权限的 protection level 为 signature 或者 signatureOrSystem 的,会检查权限申请者和权限声明者的证书是否是一致的。 至于签名机制的原理及其他作用,此不详述,本文主要介绍,签名文件key的生成、用key去签名apk文件及查看签名的方法。 生成keystore 创建keystore,需要用到keytool.exe (位于jdk_xx\jre\bin目录下),具体做法如下: 代码如下: keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.keystore #说明: # -genkey 产生密钥 # -alias mykey 别名 mykey # -keyalg RSA 使用RSA算法对签名加密 # -validity 40000 有效期限4000天 # -keystore demo.keystore

重新签名Android pre-install APK

青春壹個敷衍的年華 提交于 2019-12-04 22:18:15
重新签名Android pre-install APK Android , APK , 签名 Android , APK , 签名 题外话 : 最近在研究Android APK的 自动化 测试方法,期间遇到了APK签名问题, 尤其是Android 系统 pre-install的应用,它们的签名方式比较特殊,后面会说到,于是在Eclipse里写好的测试 代码 就会由于权限问题,无法测试这些应用。折腾了好几天,头疼。好在最后还是搞定了,于是乎就想在这里分享一下我的一点 经验 ,有感兴趣的、或者有类似问题的 朋友 们,希望能够给你们一点帮助。 什么是pre-installapk : 就是Android系统预装的一些应用,例如Messaging、Contacts、Calendar等等。 pre-install apk的签名方式 : 给apk签名的一般方法有两种,一种是在Eclipse里使用“Android Tools -> Export SignedApplication Package…”这种方式签名;另一种是用命令行签名。这里就不详细描述了。 而pre-install apk的签名比较特殊,使用源码中的默认签名。可以查看Android的源代码得知。 $ signapkpublickey.x509[.pem] privatekey.pk8 input.jar output.jar 其中,

android应用程序的签名(Signature)

让人想犯罪 __ 提交于 2019-12-04 04:31:53
1. 为什么要签名 1) 发送者的身份认证 由于开发商可能通过使用相同的 Package Name 来混淆替换已经安装的程序,以此保证签名不同的包不被替换 2) 保证信息传输的完整性 签名对于包中的每个文件进行处理,以此确保包中内容不被替换 3) 防止交易中的抵赖发生, Market 对软件的要求 2. 签名的说明 1) 所有的应用程序都必须有数字证书, Android 系统不会安装一个没有数字证书的应用程序 2) Android 程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证 3) 如果要正式发布一个 Android 应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用 adt 插件或者 ant 工具生成的调试证书来发布 4) 数字证书都是有有效期的, Android 只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能 5) 签名后需使用 zipalign 优化程序 6) Android 将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序 3. 签名的方法 1) 用 eclipse 插件方式签名 a) 调试签名 eclipse 插件默认赋予程序一个 DEBUG 权限的签名,此签名的程序不能发布到 market 上