Android 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描述的方法交叉定位).

 

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

 

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值