正文  高级教程 > 编译/反编译 >

Android APK逆向工程/反编译总结

1概述本文涉及的内容本质上就是APK的反编译, 作为一个开发者, 需要正视一下本文所谈及的技术, 目的是为了让你借鉴/学习优秀实践, 而非让你去盗用其它开发者得成果。事实是, 通过本文所谈及的内容, 如果不付......

1概述

本文涉及的内容本质上就是APK的反编译, 作为一个开发者, 需要正视一下本文所谈及的技术, 目的是为了让你借鉴/学习优秀实践, 而非让你去盗用其它开发者得成果。事实是, 通过本文所谈及的内容, 如果不付诸实践和学习,没有比较好的Android基础, 实质上也不能从反编译的一堆代码文件中, 得到有价值的信息。本文不赞成任何有损开发者劳动成果的行为。

2 基本知识

很多东西实质已经不需要再总结, 这方面有两个不错的资料。 请移步到下面的链接中阅读:

1. 反编译apk文件,得到其源代码的方法!!

点评: 不难发现代码都被Android打包成dex文件, 通过这个文件复原出来问题不大, 但大部分的情况, 复原后的Java文件, 基本上不能保证再编译通过, 但出于技术学习的目的, 某些代码片段已经包含足够的信息, go and find it!

2. 一个APK反编译利器Apktool

不赞成文章最后去掉admob广告的做法, 这样实质上是对开发者的一种伤害, 通过XML文件的学习, 对GUI方面的了解, 可谓是比较完美了。这个也是本文今天关注的重点,开发人员对GUI这块非常头痛, 所以, 通过反编译apk, 可以好好了解一些优秀实践所采用的UI方法。另外新版本不需要apk一定得放在C盘根目录。 任意指定的位置都OK.

3. Android 布局学习工具.

/android-sdk-windows/tools 目录下的 hierarchyviewer.bat, 是一款研究别人布局的好工具. 先打开这个工具, 然后启动模拟器。发现惊喜. 可以参考这篇文章获得更多的理解。Android 利用【Hierarchy Viewer 】 工具学习别人的UI设计 结合上面的第二点。能很好的复原界面元素。

3 应用

大量教程基本上是让你汉化,破解,去广告的基本行径。 本文是为了让技术开发者更好的学习Android程序用到的技术。作为一个技术人员,基本上一点点小小的思路, 就足够让它们借题发挥了。这里也只是稍微点拨一下个人常用的方法。

1. 利用图片的名称对apk破解后的资源文件进行整体搜索。将上一章所说的第二个方法一个APK反编译利器Apktool,可以得到一堆资源文件。然后Copy到Eclipse的某个工程中。进行搜索, 最最有效率的方式(还记得快捷键吧Ctr+H)。

2. 利用R.java文件中的id号, 将上一章反编译apk文件,得到其源代码的方法!!得到的源文件进行搜索. 这个时候, 基本上所使用的元素的位置基本上清楚了。

3. 当无法定位Activity对应的Layout在哪里时, 这个时候需要用到上一章讲到的第三个方法, 利用hierarchyViewer去查看布局。然后结合1和2的信息做交叉理解。(很有必要提及的问题, hierarchyViewer里面涉及的布局, 并非跟Layout的xml完全一致, 在hierarchyViewer中,很容易看到GridView中居然可以包含一个LinearLayout, 这个实际上在XML中,是不允许这样描述的。一般Android是在源码中实现一个GridView包含一个LinearLayout的, 这个时候,不得不利用到上文1和2描述的方法交叉定位).

从上文的分析来看, 所有的信息都是片段和零散信息, 技术上并没有对原来的作品侵权, 仅作为学习交流用。