一、简介
-
反编译几种路径,不同的情况走不同的路径
- 路径1:
apk -> smali
:用于重新打包。 - 路径2:
apk -> dex -> jar -> java
:绕几次最后得到 java 。 - 路径3:
apk -> frida -> dex -> jar -> java
:绕几次最后得到 java 。 - 路径4:
apk -> java(jadx)
:直接得到 java 。
但这几种只适合没加固的
apk
包。 - 路径1:
二、路径1
-
找一个普通的
apk
安装包,下载一个 apktool 工具。
-
下载好
apktool
两个文件后,将它们与apk
文件放在同一个文件夹内,这样就不需要配置环境变量了。然后进行使用命令:
# 查看帮助指令 $ sh apktool.sh -h # 执行 $ sh apktool.sh d test.apk -f -o ./dist
三、路径2
-
找一个普通的
apk
安装包,通过双击解压获得内部文件,就得到了classes.dex
文件。 -
得到
classes.dex
后,如何转成jar
? 下载 dex2jar,解压之后将dex-tools-xxx
文件夹与apk
及apk
解压得到的文件夹都放在同一级目录,然后执行命令将dex
转为jar
文件,最为核心的就是dex-tools-xxx/d2j-dex2jar.sh
文件,它就是用来转换的指令文件。先进入命令行,到这一层目录,然后根据情况选择转换命令。-
方式一:
直接对
classes.dex
进行转换,执行后会将jar
文件输出到当前同级文件夹中,当然也可以输出到指定文件夹。$ sh ./dex-tools-xxx/d2j-dex2jar.sh ./test/classes.dex
-
方式二:
直接对
test.apk
进行转换,执行后会将jar
文件输出到当前同级文件夹中,当然也可以输出到指定文件夹。$ sh ./dex-tools-xxx/d2j-dex2jar.sh -f ./test.apk
-
以上命令任意选一个,等待执行完毕后,会获得一个
jar
文件:
-
-
如何读取
test-dex2jar.jar
呢?下载 JD-GUI,打开网站后,找到JD-GUI
,根据自身电脑环境进行下载安装。这边选择的是
jd-gui-1.6.6.jar
也就是第一个,因为下载mac 版本
后提示不明开发者,且还无法安装,用jar
的只需要在系统设置安全管理中允许访问即可使用。打开
JD-GUI
工具后,可以通过Open File
或直接将jar
文件拖入丢进工具中。就能看到内部
java
源码,但是这个源码明显是处理过的,但是通过点击这些带横线的类名是可以跳转到对应文件的。