doorxp

Blog

Android 对apk进行重签名和查看签名及生成签名

生成签名文件

keytool -genkey -alias aaaa.keystore -keyalg RSA -validity 2000 -keystore newandroid.keystore

备注说明:-alias后面跟着的是别名(android.keystore) -keystore后面跟着的是具体的签名文件(及签名文件的命名:newandroid.keystore)

当使用这个命令生成后,会有个警告,不符合pkcs12标准,需要消除掉(也可以不消除),使用如下命名:

keytool -importkeystore -srckeystore android.keystore -destkeystore newandroid.keystore -deststoretype pkcs12

将上面的android.keystore签名迁移到newandroid.keystore中,其各种参数不变。


查看签名

keytool -list -v -keystore xxxx.keystore


先说一个简单的查看apk的签名信息:
第一步:将apk解压
第二步:找到META-INF 下的.RSA文件
第三步:在mac终端或者window控制器上输入命令:

keytool -printcert -file xxx.RSA


去掉apk的签名就比较简单了:
反编译apk后 去掉original里面的META-INF文件夹即可 然后回编译出来即正常apk


使用jarsigner进行签名

jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]

或者直接把密码给带进签名里面去,就不用手动输入密码库密码了:命令如下

jarsigner -verbose -keystore [您的私钥存放路径] -storepass 密码库密码 -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]

或者

jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称] -storepass 密码库密码


第二种报错:

jarsigner: 找不到kaoyan_keystore的证书链

即:由于证书名称写错了,证书名称即Alias(你设置的别名)


第三种报错:

jarsigner 只能使用一种别名

即在签名的时候 即某个路径下面出现了空格


第四种报错: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1272757617.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl1272757617.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?]

签名后安装时出现此问题:是因为原来的apk带有v2签名,即首先需要去掉v2签名,然后再签名即可

手动对齐操作:

手动对齐apk:zipalign 4 unaligned.apk aligned.apk (或者zipalign -v 4 unaligned.apk aligned.apk)

验证是否对齐:zipalign -c -v 4 application.apk。


发表评论:

«   2024年11月   »
123
45678910
11121314151617
18192021222324
252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言

    Powered By Z-BlogPHP 1.5.1 Zero

    Copyright doorxp.com Rights Reserved.