1.将apk直接改后缀得到 zip
然后解压后可以直接得到里面的res文件夹,还有lib文件夹。可以得到里面的资源文件,lib里有一些so文件
2.将dex文件转为jar文件
解压后里面还有dex文件。如果应用包很大的话会有两个用来分包,这时候需要将 dex 转为 jar,需要用dex2jar
。
下载地址:https://sourceforge.net/projects/dex2jar/files/
注意下载的版本:dex2jar-0.0.9.15
。最新的版本dex2jar-2.0
我这边使用是有问题的。
将需要反编译的dex文件放到此文件夹下,并在此目录下运行cmd,输入命令:
sh d2j-dex2jar.sh [dex文件]
示例:sh d2j-dex2jar.sh classes.dex
3.查看jar文件内容
这时候需要用到jd-gui-osx
,我下载的是jd-gui-osx-1.6.6
。
下载地址:http://java-decompiler.github.io/
下了之后也是有点坑:不能直接运行会有错误:
解决方:替代包里的文件universalJavaApplicationStub.sh
参考:https://blog.csdn.net/twx843571091/article/details/110119638
遇到的问题
搞这个可谓一步一个坑,简单的几步,看的windows教程没想到严重水土不服
1.dex2jar不能使用最新的
2.jd-gui-osx不能直接运行需要修改
3.得到的jar可能不是全的代码,执行sh d2j-dex2jar.sh [dex文件]
可能会失败了。
com.googlecode.dex2jar.DexException: while accept method:[Landroidx/activity/OnBackPressedCallback;.addCancellable(Landroidx/activity/Cancellable;)V]
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:694)
at com.googlecode.dex2jar.reader.DexFileReader.acceptClass(DexFileReader.java:441)
at com.googlecode.dex2jar.reader.DexFileReader.accept(DexFileReader.java:323)
at com.googlecode.dex2jar.v3.Dex2jar.doTranslate(Dex2jar.java:85)
at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:261)
at com.googlecode.dex2jar.v3.Dex2jar.to(Dex2jar.java:252)
at com.googlecode.dex2jar.tools.Dex2jarCmd.doCommandLine(Dex2jarCmd.java:110)
at com.googlecode.dex2jar.tools.BaseCmd.doMain(BaseCmd.java:174)
at com.googlecode.dex2jar.tools.Dex2jarCmd.main(Dex2jarCmd.java:34)
Caused by: com.googlecode.dex2jar.DexException: while accept parameter annotation in method:[Landroidx/activity/OnBackPressedCallback;.addCancellable(Landroidx/activity/Cancellable;)V], parameter:[0]
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:663)
... 8 more
Caused by: com.googlecode.dex2jar.DexException: Not support yet.
at com.googlecode.dex2jar.reader.Constant.ReadConstant(Constant.java:128)
at com.googlecode.dex2jar.reader.DexAnnotationReader.accept(DexAnnotationReader.java:58)
at com.googlecode.dex2jar.reader.DexFileReader.acceptMethod(DexFileReader.java:660)
... 8 more
失败后需要处理:https://blog.csdn.net/zhangmiaoping23/article/details/41278035
最后可能会用到的:
- apktool下载:https://bitbucket.org/iBotPeaches/apktool/downloads/
- windows版本查看dex文件内容:https://www.jianshu.com/p/dbe579f6cc84