这里只介绍下Ubuntu环境下的反编译过程。
一、反编译资源文件
进入官网:https://ibotpeaches.github.io/Apktool/install/ 介绍如下:
- Linux:
- Download Linux wrapper script (Right click, Save Link As
apktool
) - Download apktool-2 (find newest here)
- Rename downloaded jar to
apktool.jar
- Move both files (
apktool.jar
&apktool
) to/usr/local/bin
(root needed) - Make sure both files are executable (
chmod +x
) - Try running apktool via cli
- Download Linux wrapper script (Right click, Save Link As
1、右击链接保存为apktool;
2、下载最新的apktool-2;
3、确定是否有32 bit libraries;
4、下载的文件名改为apktool.jar;
5、移到两个文件到/usr/local/bin;
假如这两个文件下载到donwload目录下,进入目录:sudo mv -i apktool apktool.jar /usr/local/bin/;
6、给apktool文件执行权限:
cd /usr/local/bin
sudo chmod +x apktool apktool.jar
7、最后就可以在任何目录下执行apktool了
比如:在目录下反编译一个apk文件:apktool d app.apk
如果官网下载不了,可以去这里下载:https://download.youkuaiyun.com/download/weixin_41987588/10468554
反编译:apktool d app.apk;会在同一目录下生成一个与apk名字相同的目录,里面存放了反编译后的资源。
反编译指定目录:apktool d app.apk <dir>;dir表示反编译后文件的存储位置。如果指定的<dir>已经存在,则会无法执行,需要使用-f选项。如下:
apktool d -f app.apk <dir>:-f表示强制覆盖。
值得注意的是,apktool反编译出来只能得到apk的smali文件,即汇编语言版本,并不能得到源代码。
(二)重新打包
apktool b -o <output.apk> <input_dir>
<input_dir>就是上面反编译输出的目录,<output.apk>是编译的输出结果,默认为dist/<name>.apk。
二、反编译代码
反编译代码使用dex2jar工具。
下载:https://sourceforge.net/projects/dex2jar/files/
Android的安装包是.apk文件,可以在手机等设备上直接安装使用,但其本质就是一种压缩文件,将要反编译的apk文件后缀名改为.zip,然后就可以直接用解压工具打开了。
Ubuntu解压命令:
unzip app.zip
将apk解压出来后有一个classes.dex文件,该文件中存放的就是Java代码了。
下载的dex2jar工具仍然是zip格式的,使用unzip命令解压。
主要用到的就是d2j-dex2jar.sh文件,接下来将classes.dex文件拷贝到d2j-dex2jar的解压目录下,执行命令
sh d2j-dex2jar.sh classes.dex
如果提示权限受限,执行命令:chmod +x ./d2j_invoke.sh
如果得到提示信息:dex2jar classes.dex -> ./classes-dex2jar.jar,证明已经转化成功。
打开目录,发现多了classes-dex2jar.jar文件,这就是 classes.dex转换成的jar文件,jar文件得到以后,我们仍然无法直观得看到程序的代码,此时就需要jd-gui工具了。
三、jd查看Java源码
jd下载:http://jd.benow.ca/
jd-gui包是.tar.gz后缀,使用解压命令:
tar -zxvf jd-gui-0.3.5.linux.i686.tar.gz
解压后jd-gui可以直接双击打开。
点击file→Open File,选择刚刚转换得到的classes-dex2jar.jar文件,打开就是我们需要的代码文件了
https://blog.youkuaiyun.com/dreamer2020/article/details/52761606
https://blog.youkuaiyun.com/qq_32115439/article/details/55520012
cd /Android/Sdk/build-tools/26.0.2
./zipalign -f -v 4 SpiritAdaptix.apk SpiritAdaptixzip.apk
./apksigner sign --ks /home/sgf/software/jdk1.8.0_161/bin/debug.keystore --ks-key-alias androiddebugkey SpiritAdaptix.apk