apktool工具
ApkTool是一个Apk逆向工程所使用的第三方工具。它可以将资源解码成接近原始的形式,并在修改后重建。它可以一步一步地调试smali代码。此外,它还简化了应用程序的工作,因为它具有类似于项目的文件结构,并且自动化了一些重复性的任务,如构建APK等。
可以将apktool 配置到环境变量中,这样只需直接通过apktool命令即可使用。
在mac中配置步骤:
1.下载脚本,保存为apktool;
2.下载最新的apktool_x.x.jar;
3.将下载的jar包重命名为apktool.jar;
4.将下载的apktool和apktool.jar移到/usr/local/bin目录,可手动移动也可通过以下命令行移动:
sudo mv file /usr/local/bin
5.赋予两个文件可执行权限
sudo chmod a+x apktool.jar
sudo chmod a+x apktool
此时即可使用apktool命令
- 简单的命令:
# 反编译
$ apktool d test.apk
# 重新编译
$ apktool b test
如果有以下报错,
Exception in thread "main" org.jf.dexlib2.dexbacked.DexBackedDexFile$NotADexFile: Not a valid dex magic value: cf 77 4c c7 9b 21 01 cd
说明apk中含有加密的Dex文件,可添加以下命令忽略此类dex的反编译
#反编译(忽略加密dex)
$ apktool d test.apk -only-main-classes
6.此时应该还要准备两个文件(可在文章结尾下载)
dex2jar:dex转jar工具
jd-gui:jar包可视化工具
在逆向过程中,dex2jar帮助我们将dex文件转换成jar包,jd-gui帮助展开了jar包,就可以愉快的偷窥了。
7.万事俱备,只欠apk
在windows中配置
1.下载apktool_x.x.x.jar
2.将jar拷贝到本地某个文件夹下
3.在当前文件夹下新建apktool.bat文件,内容如下:
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %*
4.双击运行bat 。
5.执行完毕后,在当前文件夹下重新打开Powershell(可以shift+鼠标右键快速打开),输入apktool即可正常使用。
应用市场摘取一枚apk
此处简单以youdaonote.apk为例
-
执行完毕apktool d xxx.apk后,会在同级目录下生成一个文件夹
-
在IntelliJ IDEA中打开
-
尝试破解-非vip可使用壁纸
(在该应用中,非vip是无法使用特定壁纸)
此处需要了解简单的smali语法
参考:https://www.cnblogs.com/sevck/p/6844513.html
之后就是可以全局查找,浏览等等手段,定位到关键代码位置,修改smali代码,再通过上面的命令来完成重新打包,再签名,即得一枚破解包。
- apktool b test
后记
这里只是简单的记录下破解手段,因为自家app也被破解了,所以必须得知己知彼。
破解软件不安全,用不得,此处仅供学习。
# 反编译
apktool d app-release.apk -o outdir
# 回编译(生成的apk默认放在targetdir/dist目录中,或通过 -o new.apk 指定)
apktool b targetdir
dex2jar+jd-gui mac版下载(提取码7i7k)