<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近同事分享了一篇文章</span><a target=_blank href="https://jaq.alibaba.com/community/art/show?spm=a313e.7916646.24000001.8.IxjB6x&articleid=339" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">文章链接</a><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> ,是关于动态调试的,后来仔细一看,这个功能可不止动态调试那么简单了,用不好可是能做很多坏事呢</span><img alt="生气" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/mad.gif" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" /><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">。</span>
但是我可以怀着学习技术的心情在看,绝不做坏事。
这个文章说到了,怎么把classes.dex转成smali格式,smali相当于android的汇编语言;然后嵌入代码,最后重新打包。
问题出在最后,我手上的签名文件只有keystore类型,但是打包方式是
java -jar signapk.jar cert.x509.pem private.pk8 *.apk signed.apk
我想应该有工具可以对证书进行转换吧,我搜索了一番,还真有!但貌似是个人做工具,还要分才能下。被逼无奈,只好自己搞一个吧。
在网络搜集了一些资料以后,准备下手了。
第一步:先准备好你的签名证书,debug.keystore(随便取了个名字)
第二步,转换
#keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12 >>info.txt
这一步将keystore转换为PKCS12格式,这样还不能查看证书信息了。
第三步,
#openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem >>info.txt
这时候我们得到tmp.rsa.pem。这里面有我们需要的信息:
Bag Attributes
friendlyName: ****
localKeyID: *******
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
*******
-----END PRIVATE KEY-----
Bag Attributes
friendlyName: ****
localKeyID:****
******
-----BEGIN CERTIFICATE-----
******************
-----END CERTIFICATE-----
(********内容不可见光,所以你们看不到)
大概就是这样的格式,看内容,证书的秘钥和私钥我们都拿到了。
接下来才是重要的
第五步,创建两个文件,分别是my.x509.pem和myprivate.rsa.pem,这两个文件的内容分别是:
my.x509.pem
Bag Attributes
friendlyName: ****
localKeyID:****
******
-----BEGIN CERTIFICATE-----
******************
-----END CERTIFICATE-----
myprivate.rsa.pem
Bag Attributes
friendlyName: ****
localKeyID: *******
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
*******
-----END PRIVATE KEY-----
到这个已经成功的一般,因为x509.pem已经有。
第六步,
openssl pkcs8 -topk8 -outform DER -in myprivate.rsa.pem -inform PEM -out myprivate.pk8 -nocrypt >>info.txt
!!!!!:-nocrypt 这个参数设定key不用加密,去掉则要输入密码。
这样*.509.pem和*pk8都有了。
我用批命令写了一个工具。大家用得着就下载。
链接链接