一、简介
-
反编译几种路径,不同的情况走不同的路径
- 路径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文件放在同一个文件夹内,这样就不需要配置环境变量了。然后进行使用命令:
# 解包命令,解包到当前文件夹 $ java -jar apktool.jar d test.apk # 解包命令,解包到指定文件夹 $ java -jar apktool.jar 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源码,但是这个源码明显是处理过的,但是通过点击这些带横线的类名是可以跳转到对应文件的。