反编译

编译:

1、java -> jar

2、jar -> dex

反编译:

1、解包 apk 文件

2、dex -> jar

3、jar -> java


将apk更改为zip,拷贝其classes.dex等dex到dex2jar-2.0文件夹
双击dex2jar-2.0文件夹下的d2j-jar2dex.bat,再打开cmd,进入当前dex2jar-2.0目录,
执行[d2j-dex2jar classes.dex],得到的是classes-dex2jar.jar包。
获得classes-dex2jar.jar,使用GUI工具打开jar包

工具:
brew install apktool

命令行输入 apktool, 正常就表示安装成功
进入apk目录,反编译app,输入:apktool d test.apk
此时 dex 文件直接反编译成了 smali 文件,而我们需要的是 .dex 文件
apktool d -s -f test.apk
-d 反编译 apk 文件
-s 不反编译 dex 文件,而是将其保留
-f 如果目标文件夹存在,则删除后重新反编译


改完资源文件或者代码后
重新打包: apktool b b_test -o newtest.apk


-b 是指 build
b_test 是刚才反编译出的文件所在的目录
-o 用于指定新的文件名称,这里指定为「newtest.apk」


此时的 apk 文件是不能安装的,还需要对其进行签名【password】 【aliasName】
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore Awesome.keystore -storepass password app-release.apk axxx

查看class转java文件:
JD-GUI (卡住失败)
Luyten (空指针报错)
jadx (成功、导出大文件有优势)

打开: jadx-gui – graphical version

文档参考:
https://www.cnblogs.com/whycxb/p/9139146.html
https://www.crifan.com/use_jadx_extract_android_dex_file_conversion_jar_package_java_source_code/
https://www.zhihu.com/question/29370382

你可能感兴趣的:(反编译)