Android apktool是一个用来处理APK文件的工具,可以对APK进行反编译生成程序的源代码和图片、XML配置、语言资源等文件,也可以添加新的功能到APK文件中。常常利用该工具来汉化Android软件然后重新打包发布。
一、反编译apk文件
命令:apktool d <file.apk> <dir>
其中:file.apk是待反编译文件的路径,dir是反编译后的文件的存储位置。
注意:如果dir已经存在,会提示报错,此时加上参数-f会强行覆盖dir。
举例:apktool d renrenmini.apk renrenmini
二、重新打包
命令:apktool b <dir>
<dir>就是反编译时输入的<dir>,如果一切正常,命令执行完成后dir内多了2个文件夹build和dist,其中分别存储编译过程中逐个编译的文件以及最终打包的apk文件。
举例:apktool b renrenmini。
三、创建keystore、
keytool
-genkey -keystore my_keystore -keyalg RSA -validity
10000
-alias
zr
-genkey 产生证书文件
-keystore 指定密钥库的名称
-keyalg 指定密钥的算法
-validity 为证书有效天数,这里我们写的是10000天。
-alias 产生别名
之后会提醒输入密码,一定要记住这个密码。
四、签名。
命令:jarsigner
-verbose -keystore keystore_name -signedjar
new
.apk
original.apk keystore_alias
解释:
将keystore文件复制到需要签名的apk的同一路径下。其中keystore_name
是keystore文件名,new.apk是签名后新生成apk的名称。original.apk是待签名apk名称。
keystore_alias
是keystore的别名。运行命令,系统会要求输入密钥(建立keystore时设置的密钥,一定要记住)。输入密钥成功后便会执行签名操作。
举例:
jarsigner
-verbose -keystore my_keystore -signedjar
signed_renren
.apk
nosig_renren.apk zr 其中my_keytore为文件名,zr为别名。
注意:如果忘记keystore的别名,可以通过命令:
如下:zr@zr-PC:~/workspace$ keytool -list -v -keystore my_keystore -storepass 123456keytool -list -v -keystore [enter keystore name] -storepass [enter keystore password] 获得别名。
密钥库类型: JKS
密钥库提供方: SUN
您的密钥库包含 1 个条目
别名: zr
创建日期: 2014-10-14
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=zeng run, L=Beijing
发布者: CN=zeng run, L=Beijing
序列号: 58ec916d
有效期开始日期: Tue Oct 14 16:19:26 CST 2014, 截止日期: Sat Oct 08 16:19:26 CST 2039
证书指纹:
MD5: C4:73:2F:59:F5:CA:76:C1:10:59:98:E8:F9:23:9E:9E
SHA1: 16:90:E7:D3:E8:ED:9D:E0:5E:47:9A:3B:D4:D4:8E:D0:40:AF:BD:23
SHA256: FF:0F:AF:A5:FA:8F:A8:25:8D:8D:E7:17:08:71:46:CD:60:F1:44:F0:88:81:6F:3E:7B:61:AC:8F:B0:7D:17:CC
签名算法名称: SHA256withRSA
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E6 61 76 EB C6 99 7D 4B F6 B5 75 AD E1 FA 63 E5 .av....K..u...c.
0010: 3C D4 BC 5F <.._
]
]
*******************************************
*******************************************