APK反编译指南

APK反编译踩坑指南

我们在开发过程中我们经常致敬别人的某一块功能或者页面,此时我们只有别人的APK包,该如何使用别人的代码呢?聪明的同学和我想到一块去了,对,反编译别人的APK就可以了。那么具体该怎么做呢?

一、工具

反编译三件套是必不可少的
1、winRar(或者zip压缩工具):不用多少都知道是干嘛的
1、dex2jar :将解压缩出来的dex文件转为jar文件
2、jd-gui : 打开jar,就可以查看class文件了

二、步骤

1、将apk文件修改后缀名为.zip或rar
修改APK后缀名为zip
2、解压缩
APK反编译指南_第1张图片
解压缩后就可以直接拿到assets资源文件和manifest文件了

3、使用dex2jar(必须有java环境)打开classes.dex文件
1)将classes.dex 和dex2jar 放在同一目录下

APK反编译指南_第2张图片
APK反编译指南_第3张图片
在反编译的时候由于版本问题会出现如上错误,不要急,解决很简单
1、使用二进制编辑器修改dex文件的版本(太麻烦懒得弄)
2、黑科技:使用notepad++打开dex文件
APK反编译指南_第4张图片
只需要修改第一行的版本就可以了修改版本
为什么修改成36呢,这个自行查资料吧,实际修改为36和35都可以
再次使用CMD运行dex2jar
APK反编译指南_第5张图片
虽然还是会有错误,但是已经可以看到源码了
反编译出来的jar文件
3、使用jd-jui工具
APK反编译指南_第6张图片
这样就可以看到源码了,虽然有混淆,但是可以大概看出来代码逻辑了,但是这样还是不够友好,既然是jar文件,那我们为何不使用AndroidStudio查看源码呢,哈哈,多想不如实干。APK反编译指南_第7张图片
jar包引用我就不说了

APK反编译指南_第8张图片
是不是很棒呢!!!

有的同学又问了,为什么我的manifest文件打开乱码呢?有什么解决办法没有,我还想看看xml文件呢?答案当然有啦,下面我们看看xml乱码怎么解决

APK反编译指南_第9张图片
可以看到反编译后的清单文件全是乱码
下来我们看下另一个xml神器 AXMLPrinter
使用和dex2jar一样
1、放在同一目录下
将xml文件放在AXML同一目录下
2、在CMD使用AXML打开xml文件
使用CMD命令打开xml文件
APK反编译指南_第10张图片
因为我的清单文件比较长,导致显示不全,不用担心,继续
将xml转为TXT
转了之后的txt文件
APK反编译指南_第11张图片
这下是不是感觉非常良好。。。

总结

以上步骤基本可以反编译apk中所有资源,源码和xml以及图片等,只要我们动手去做了,其实并没有那么难!!

你可能感兴趣的:(技术之路)