Android反编译那些事

在应用开发的过程中难免会遇到想要看看某一款App的功能是如何实现的,这样就需要逆向对方的代码。

所需环境,工具

工欲善其事必先利其器,需要准备如下工具:

ApkTool:是一款应用在Apk上的逆向工程的工具,它有编译、反编译、签名等功能,在这篇文章中会讲解如何利用ApkTool查看apk的xml文件、AndroidManifest.xml和图片等。

dex2jar:顾名思义,这款工具的作用主要是将dex文件转换成jar文件,转换成jar后我们才好借助JD-GUI来查看反编译dex后的代码;

JD-GUI:一款Java反编译器GUI,通过它我们能查看到反编译后的dex的代码,通常需要配合dex2jar使用;

关于这些可以参考这篇文章:link

更为方便的是:jadx,jadx可以直接将apk反编译出java源码,但是并不是所有的都能被反编译出来需要我们学一些smali语法来了解相关实现逻辑。

Root手机并修改成可调试release应用:

以上是逆向apk所需要的工具,其次还需要一台root的手机,关于root手机可以参考twrp相关的介绍,还需要安装Magisk等。在安装好Magisk并root手机后安装其相关插件,props和依赖等busybox,这些插件的安装最好系手机系统版本而定可能老一些的系统在使用props修改系统的ro.debuggable属性失败,在这个时候可以用mprop尝试修改系统属性实现对release包的debug。

可调式状态的手机

需要配置Android Studio以调试apk反编译出来的smali代码:link(有些需要动态调试下断点的地方需要此类功能)


举例说明

故事是这样开始的,一日xx领导说让在下看看某某app的某某功能是怎么实现的?在一顿操作猛如虎后完成环境搭建。安装好某某app,进入其中某某页面抓其布局如下:

用Android Studio的Layout Inspector抓取当前activity的页面布局

根据页面布局呢,我们可以找到对应组件的id,既然知道id,那么就可顺藤摸瓜找到相关逻辑,比如id/ps的按钮,通过软件行为可知是做了删除操作,具体逻辑怎么看呢?窃听我慢慢分析。

首先作为开发者我们肯定希望组件是可以复用的,那么根据布局即可猜测ps组件所在的ViewGroup很可能是一个单独的布局文件,于是我开启了全局的搜索,我找到了如下文件:

此组件所在的布局文件

看看抓取的布局结构与找到的基本能对应上了。ps这个关键字还有利用价值,我继续寻找其对应的16进制id值,搜索范围可以定在xml文件中即可,在public.xml中我找到了对应的值

<public type="id" name="ps" id="0x7f110262" />

有了这个0x7f110262值搜索范围可以确定在java或者smali文件中了。继续搜寻

找到这个组件查询创建的地方

至此我们找到了对应组件的创建逻辑,但是其点击后执行的逻辑还没有找到。

在前面我提到过,一般开发者会将一个组件封装进行后续多次使用,鉴于这种思想我们全局去搜索这个组件所在类的使用地方

动态创建的地方

鉴于我分析的页面这个组件也的确可能是动态创建出来的,至此基本符合我们的预期猜测。到这里我们继续寻找是不是有onClick点击的事件呢?

果然在这个类的最下方我看到了点击后删除的逻辑。至此分析完成。


后记

在这个分析过程中需要站在一个开发者的角度去思考,如果你是开发者你会怎么写这种代码?有了上述工具与环境还有一些经验即可找到一些我们想要的逻辑,当然这个例子相对简单,有些复杂的逻辑不方便寻找可能还需要我们使用到Xposed进行远程hook查看相关逻辑比如在怀疑点打印调用堆栈,log日志等。

一定要学习的目的来看别人的劳动成果每一款app都是凝结很多开发者的心血,不可利用到商业用途。切记~~~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,406评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,976评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,302评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,366评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,372评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,457评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,872评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,521评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,717评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,523评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,590评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,299评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,859评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,883评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,127评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,760评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,290评论 2 342

推荐阅读更多精彩内容