android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-si
通过dex2jar和jd我们可以反编译apk中的dex,可以比较完美的查看java源文件;通过apktool可以反编译apk中的xml等资源文件,然后通过apk-sign签名,可以制作成修改版的可发布apk文件。
1.dex2jar反编译dex文件:
a.下载文件见附件: apktool-1.3.1.tar.bz2, jd-gui.zip,或点击这里 下载;解压;
b. 把apk文件后缀名改为.zip,然后解压缩其中的class.dex文件,它是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件;
c.把class.dex拷贝到dex2jar.bat所在目录,运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar ;
d.运行jd-gui工具(绿色无须安装),打开上面生成的jar文件,即可看到源代码;
2.apktool反编译xml等资源文件:
a. 安装java环境,下载文件件附件: apktool-1.3.1.tar.bz2, apktool-install-windows-2.2_r01-2.tar.bz2,或点击这里 下载;把这两个文件解压到同一目录下,该目录下cmd中运行apktool获得帮助信息;
b.apktool d XXX.apk ABC
c.apktool b
d.这样我们就可以把远apk文件通过反编译后,然后对里面资源文件作修改,然后再重建为apk即可;但是因为没有签名,所以不能安装
apk-sign签名apk文件:
详细的签名步骤:
首先我们要生成一个keystore 否则在签名的时候报如下错误
jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。).
(这边的ij2ee 是我当前系统用户名)
生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore 比如我的就是
C:\Program Files\Java\jdk1.6.0_10\bin>keytool -genkey -alias zijie.keystore -keyalg RSA -validity 20000 -keystore zijie.keystore
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
您的组织名称是什么?
您的组织名称是什么?
您所在的城市或区域名称是什么?
您所在的州或省份名称是什么?
该单位的两字母国家代码是什么
CN=zijie, OU=www, O=www, L=www, ST=www, C=CN 正确吗?
输入的主密码
这时候会在jdk的bin目录下生成 .keystore 。把这个.keystore文件移动到 C:\Documents and Settings\当前系统用户 的目录下面。