APK 反编译笔记

反编译软件

首先是很多人在用的三个:

这三个通常是配合使用的,下载后只要解压即可使用。
然后还有一些更为易用一些,可以一步到位的软件:

我建议可以直接用上 jadx 和 APK Analyzer 这两个插件,其他的了解一下就可以了,因为很多时候反编译的帮助并没有想象的大,混淆过的代码如果不深入研究也很难看出所以然。

软件的实践

  • Apktool

首先将下载的压缩包解压,然后将需要反编译的 Apk 放到解压后的文件夹内,


F:\apktool2.2

在 cmd 转到该文件夹目录下,或者在文件夹下 shift + 右键选择在此处打开命令行窗口
输入命令:

apktool d <apkName>.apk
apktool 2.2

这就生成了一个以 apk 名字命名的文件夹 base 里面就有该 apk 包含的资源文件:

base
  • dex2jar + jd-gui 查看源码

先用 dex2jar 将 apk 转换成 jar 文件。
首先,将 apk 的后缀改成 zip 或者 rar,然后用压缩软件打开:

base.zip

classes.dex 文件放到 dex2jar 根目录下。
(其实放不放都行,不放到根目录下需要在文件名前面加上路径):

F:\dex2jar-2.0

在该目录下打开 cmd 输入命令:

d2j-dex2jar classes.dex
image.png

这样就生成了文件 classes-dex2jar

然后打开 jd-gui ,将 jar 文件拖动到窗口即可:

jd-gui

这里的这个 apk 是未混淆的 debug 版本,所以文件被完整的反编译出来了,然而正式版的 apk 被混淆后,即使反编译出了 java 文件,它的可读性也是非常差的。

  • android-classyshark

GitHub 上的开源软件,使用是真的简单,双击下载下来的 jar 文件就会弹出软件的窗口,把 apk 拖到窗口就完成了上面的操作:

classyshark

但是这个反编译出来的源码很少,基本看不到相应的逻辑。所以还不是特别的好用。然后我就继续找,找到了 jadx,应该就是这一篇的 mvp 了。

  • jadx

同样是 GitHub 上的,可以在这里 直接下载 zip 文件,解压后找到\jadx-0.6.1\bin 中的 jadx-gui 文件:

jadx-0.6.1\bin

点击打开就是 jadx 的图形界面了,然后把 apk 拖到窗口:

jadx

和 dex2jar + jd-gui 反编译出来的文件对比差不多,但是易用很多。

  • APK Analyzer

现在 Android 应该绝大大大部分都是在 Android Studio 上开发了,所以自带的反编译插件也该一提。

可以在 Build -> Analyzer APK... 打开:

APK Analyzer

然后选择路径即可。
也可以直接将 apk 拖到 AS 的窗口直接打开:

Analyzer APK

可以查看资源文件,也可以查看源码,可以说也是很好用的插件,只是面对未混淆过的 apk ,反编译出来的源码可读性也不高。

后记

其实这也是最简单的反编译实践,和一开始想的不太一样。比如一开始我可能是对市面上的一些 APP 某些功能感兴趣,在不知道怎么实现的清空下希望能通过反编译查看源码来学习。

但上面说过了这并非易事,反而在查资料的时候发现反编译和查看资源文件的用处可大了,而不仅是查看源码而已。

比如为 APK 瘦身的时候,可以在 APK Analyzer 查看源码和各文件的大小、方法数和引用的库等信息。

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

推荐阅读更多精彩内容

  • 前言 处理反编译,首先先要了解apk文件的结构,然后是编译过程,最后是反编译。反编译Apk的目的就是Apk拆成我们...
    yzzCool阅读 5,694评论 0 8
  • apk是安卓工程打包的最终形式,将apk安装到手机或者模拟器上就可以使用APP。反编译apk则是将该安卓工程的源码...
    隋胖胖LoveFat阅读 66,579评论 6 56
  • 1. 为什么要反编译? 场景一 产品经理:xxx,反编译xxx的播放器,看看他们是怎么实现的? 场景二 测试:这个...
    伤口不该结疤阅读 12,105评论 7 51
  • 使用到的工具:Apktool:用来获取图片、xml等资源文件dex2jar:把dex文件转换成jar包JD-GUI...
    good_dev阅读 786评论 0 1
  • 我会祈祷,祈祷老天保佑善良的我们穿过黑暗,永远活在温暖的阳光下。 祈祷我们不会被恶俗的小人中伤,远离那些贪劣的坏人...
    驻足现在阅读 241评论 0 0