android反编译及再次打包

来源:互联网 发布:unity3d游戏开发基础 编辑:程序博客网 时间:2024/05/20 03:04

一)、环境配置及命令熟悉。 

1:安装J AVA并设置环境变量

Java jdk下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html

   Java环境参考地址http://jingyan.baidu.com/article/e75aca85508d15142edac6b8.html

  

2:下载apktool 工具

Apktool下载地址 :https://ibotpeaches.github.io/Apktool/

3:对apk进行反编译

该命令用于进行反编译apk文件,一般用法为 

apktool d <file.apk> <dir> 

<file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk 

<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer,也可以不写,默认存在apktool工具所在目录下。

如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令 

apktool d –f <file.apk> <dir> 

这样就会强行覆盖已经存在的文件 

 

如:Cmd 中切换apktool 工具所在的目录中,apktool  d  hello.apk(此处换成你apk 的绝对路径)

 

4:对反编译的apk文件进行再次打包

apktool b<dir> 

这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。 

如:Cmd 中切换apktool 工具所在的目录中, apktool b F:\android_package\hello\dist\ hello.apk(此处放反编译的apk文件)进行打包生成apk.(此时的apk没有签名不可以安装需要再次签名)

 

5:对再次打包的生成的APK进行签名

Apksigner签名工具下载地址:http://apk.aq.163.com/apkpack.do#download

java -jar ApkSigner.jar [-appname test] -keystorekeystorePath -alias alias [-pswd password] [-aliaspswd aliasPassword]apkPath(or directory) 

 

-appname

待签名的应用程序名,可选,但建议不同的APP填上对应的app名(可以为中文),有助于【加速】

-keystore

后跟.keystore签名文件

-alias

后跟签名别名

-pswd

后跟对应签名的密码,例如这里是:android可选,如果不填,则签名的时候需要手动输入

-aliaspswd

对应别名 alias的密码,如果没有则默认使用 keystorePassword

最后跟待签名的apk路径或者目录路径,如果跟的是目录则是批量签名

 

如:对上一步打包好的apk进行签名:

java -jar apksigner.jar -appname hello  -keystore F:\android_package\android-keystore -alias hello_alias   -pswd hello –aliaspswd  hello  F:\android_package\hello \dist\hello .apk

对F:\android_package\hello\dist\hello.apk进行签名,签名后既可以在手机上安装

 

6:对签名后的apk进行优化(此步骤需要配置android JDK环境)

 签名之后,如果需要进行对齐操作,请调用命令: zipalign -f 4 in.apk out.apk, zipalign 这个程序在 android sdk 有提供。

 

如:zipalign -v 4 F:\android_package\hello\dist\hello.apk    hello_align.apk

 

 

 

二)、实战编译反编译签名过程

1):对F:\android_package目录下的hello.apk进行反编译:

进入cmd中切换目录到F:\android_package中执行

Apktool d F:\android_package\hello.apk;

在F:\android_package目录中生成对应的hello文件,

我们可以修改hello文件的资源文件及替换图片,修改渠道等操作。

此操作我们可以通过运行:F:\android_package目录下的apktool_d.bat完成。

(注意:有时可能会因为我们修改了文件后会生成对应修改文件的bak文件导致再次打包时报错,我们删除该文件就ok了)

 

2):对反编译后修改的hello文件进行打包

进入cmd中切换目录到F:\android_package中执行

Apktool b F:\android_package\hello

在F:\android_package\hello \dist文件中会生成一个对应的hello.apk 。此时的apk没有进行签名是无法安装到手机上,需要再次签名才可以安转。

此操作我们可以通过运行:F:\android_package目录下的apktool_b.bat完成。

 

3):对再次打包后生成的apk进行签名:

进入cmd中切换目录到F:\android_package中执行

java -jar apksigner.jar -appname hello  -keystore F:\android_package\android-keystore -alias hello_alias   -pswd hello –aliaspswd  hello  F:\android_package\hello \dist\hello .apk

对apk进行签名;之后会在F:\android_package\hello\dist\生成签名后的apk覆盖之前未签名的apk,此时的apk已经可以安装到手机中了。

此操作我们可以通过运行:F:\android_package\apksigner目录下的apksigner.bat完成。

4):用zipalign 对apk进行对齐优化操作:

进入cmd中切换目录到F:\android_package中执行

zipalign -v 4 F:\android_package\hello\dist\hello.apk    hello_align.apk

后会在F:\android_package中生成一个hello_align.apk 的apk

到此二次打包完成。

 

0 0
原创粉丝点击