Mac 反编译apk 修改资源图片、重新打包、签名

首先配置JDK,进入官网下载安装Java JDK

下载安装apktool, 官网详细步骤Apktool

注意:保存的apktool为apktool.sh文件

安装成功后,执行以下命令:

cd /usr/local/bin 

在bin文件下执行:  (/Users/avia/Desktop/test/test.apk  为apk文件的绝对路径)

  java -jar apktool.jar d /Users/avia/Desktop/test/test.apk

输出结果: 

I: Using Apktool 2.3.4 on test.apk

I: Loading resource table...

I: Decoding AndroidManifest.xml with resources...

...........

解压出来的test文件就是反编译后的文件。Mac 反编译apk 修改资源图片、重新打包、签名

可以再res文件里修改图片。

 

重新打包apk

 bin文件下执行命令:(test 即为反编译出来的文件)

java -jar apktool.jar b test 

成功后,会在test文件下生成如上图的dist文件,里面的test.apk即为新打包的apk

 

签名

生成签名

如果没有或需要重新生成签名,使用JDK自带的keytool工具来完生成keystore。

执行命令:

keytool -genkey -v -alias android -keyalg RSA -validity 20000 -keystore ~/Desktop/test/android.keystore

参数解释如下:

-genkey 产生证书文件 
-alias 产生别名 
-keyalg 指定**的算法,这里指定为RSA(非对称**算法) 
-validity 为证书有效天数,这里写的是20000天

-keystore 指定**库的android.keystore文件,可在文件名前面添加路径

输出:

输入**库口令:  

再次输入新口令: 

您的名字与姓氏是什么?

  [Unknown]:  test

您的组织单位名称是什么?

  [Unknown]:  test

您的组织名称是什么?

  [Unknown]:  test

您所在的城市或区域名称是什么?

  [Unknown]:  test

您所在的省/市/自治区名称是什么?

  [Unknown]:  test

该单位的双字母国家/地区代码是什么?

  [Unknown]:  test

CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?

  [否]:  

您的名字与姓氏是什么?

  [test]:  test

您的组织单位名称是什么?

  [test]:  test

您的组织名称是什么?

  [test]:  test

您所在的城市或区域名称是什么?

  [test]:  test

您所在的省/市/自治区名称是什么?

  [test]:  test

该单位的双字母国家/地区代码是什么?

  [test]:  test

CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?

  [否]:  Y

正在为以下对象生成 2,048 位RSA**对和自签名证书 (SHA256withRSA) (有效期为 20,000 天):

CN=test, OU=test, O=test, L=test, ST=test, C=test

输入 <android> 的**口令

(如果和**库口令相同, 按回车):  

再次输入新口令: 

[正在存储~/Desktop/test/android.keystore]

即可在~/Desktop/test/ 中找到android.keystore文件

设置签名

使用JDK自带的jarsigner工具来完成签名。

jarsigner的命令格式
jarsigner -verbose -keystore [签名文件存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [签名的别名]

如:

jarsigner -verbose -keystore ~/Desktop/result/android.keystore -signedjar ~/Desktop/result/result.apk ~/Desktop/result/test.apk android

jarsigner的参数说明
签名文件存放路径:
签名文件的绝对路径,例如:~\android.keystore

签名后文件存放路径:
指定要签名apk文件的绝对路径例如 c:\result.apk

未签名的文件路径 :
指定要签名apk文件的绝对路径,一般是应用市场会给你一个为签名的的包,就是那个,例如 c:\test.apk

签名的别名:
是指您创建签名文件的时候,你设置的别名 (android)

 

操作步骤
1.进入命令窗口 ,输入上述命令, enter 键继续
2.提示输入签名密码,输入,enter 键继续
3.打包成功,去指定的路径查看签名后的 apk 文件

 

大功告成!