什么情况需要反编译

我们要想使APK成为我们可以阅读理解的文件就需要使用到反编译

  • 做某个功能不会做了,但是其他应用有相同功能,想知道他是如何实现的,那就需要查看他的APK源码,这时候就需要用到反编译。将APK反编译成我们可以看懂的代码,查找到关键代码,应用到我们自己的项目中。
  • 破解APK,查看源码找到访问链接及关键参数,然后可以自己写HTTP请求模拟参数访问,多用于软件市场刷量,发评论,这是一种恶意行为不建议使用。

反编译的目的

有安卓开发经验的同学一定知道,安卓使用的是JAVA语言,在项目编译成可安装到手机上的APK时候,.java源文件已经被编译成.class文件,.class文件是一组以8字节为基础单位的二进制流文件,我们是无法理解阅读的。

apk反编译python APK反编译是什么_java


上面是把百度地图APK,后缀名换成zip,解压缩后的文件结构,有一定安卓基础的同学能看出来:

`assets`目录一般放的是.so文件(之后我也会讲解如何破解并且修改重新编译.so文件)
`lib`目录放的是使用的第三方JAR
`res`资源文件
`AndroidManifest.xml`是清单文件,现在打开里面是二进制字符,无法阅读理解(之后也会讲如何反编译清单文件)
`classes.dex`就是我们要用于反编译的文件

反编译结果

  • 反编译classes.dex文件后,通过Java Decompiler工具查看到的就是可以阅读理解的java代码

apk反编译python APK反编译是什么_反编译_02

  • 可以通过AXMLPrinter2.jar工具将AndroidManifest.xml编译成可以阅读理解的文件
  • 布局文件以及图片等都是可以直接查看的

反编译使用到的工具

记住工具不是万能的,我们要多去尝试使用不同的工具去反编译文件,有的工具可以编译classes.dex,但是确不能编译AndroidManifest.xml,有的工具能查看编译出来的JAR文件,但是里面有的代码看不到,那就换一个查看工具。要多去尝试,总有惊喜等着你。

`ApkIDE`使用率比较高的一款一键式反编译工具,可以直接将APK拖进去,反编译后的文件可以直接查看
`AndroidKiller`和`ApkIDE`功能类似,也是一键式反编译工具
`dex2jar`直接反编译`classes.dex`文件
`AXMLPrinter2.jar`反编译`AndroidManifest.xml`文件
`ApkToolBox`功能很全,最强大的是jadx查看jar文件,查看到的代码很全
`IDA Pro`反编译.so文件,并进行修改文件重新编译成可执行文件

反编译总结

反编译是一项很枯燥的事情,有可能你一天也找不到你想要的东西,但是贵在坚持,也许在某一刻,突然找到一个很细微的线索,你顺着这个线索就能发现一片新的‘大陆’。