当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码。

下面就简单介绍一下如何将我们从网上下载的Apk文件进行反编译得到我们想要获得的资源文件和源码。

一、Apk文件组成

Android的应用程序APK文件说到底也是一个压缩文件,那么可以通过解压缩得打里面的文件内容,不过很显然,当你去解压完去查看的时候,发现里面的很多东西和你想象中的不太一样。资源文件等xml文件基本打不开,即使打开了也都是乱码(而这正是Android进行加密过),有些应用会将图片资源等的也加密(如qq音乐)。

 

而既然直接解压无法看到正常的应用程序,那么就需要借助反编译软件来实现APK的反编译。

二、反编译必备工具及使用

Android工程文件主要有资源文件和源代码组成。而为了查看资源文件需要借助一个工具,本文使用的是apktool工具进行反编译,经过编译后能够正确查看XML文件和其他的非XML的资源文件,这对于汉化而言有着巨大的意义。而为了查看源码,则需要借助于dex2jar和jd-gui这两个工具,其中dex2jar工具负责将dex文件转化为jar文件,而jd-gui则用于查看jar文件。

1)apktool

一次失败的经历-----使用apktool时报错

原因:apktool的版本过低,无法解析当前版本的apk。

修正:

更新最新的apktool版本后正常,本文使用的最新apktool版本为2.2.2.

然后就可以发现资源文件等xml文件可以正常打开。

 

 

 

2)Dex2jar

接下来就需要对source code进行反编译。

需要借助工具Dex2jar和jd-gui。其中Dex2jar,顾名思义就是将dex文件反编译为jar文件。而jd-gui则用于直接查看jar包中的源代码。

具体步骤就是将apk文件解压,得到其中的classes.dex,它就是java文件经过编译而后通过dx工具打包而成的,而后解压下载的dex2jar,将classes.dex复制到dex2jar根目录下,在命令行下定位到该目录下,运行d2j-dex2jar.bat classes.dex classes.dex

 

可以发现得到一个classes-dex2jar.jar文件。这个文件就是我们需要得到的source code。

3)jd-gui

接下来需要在jd-gui中浏览该文件,这个就是最终的结果

当然,你也发现了这些源码都是被混淆了的,即用无意义的字母来重命名类、成员变量、方法和属性以及删除没用的注释。

三、Apk的加密过程

既然都提到了这里了,我们也顺便了解一下Android Apk的加密过程。

由于Java字节码的特殊性,使得它非常容易被反编译,(正如刚才我们进行的那些操作,借助一下工具就反编译了一个QQ音乐的Apk),因此,显然我们会有一些保护措施,对编译好的Class文件进行一些保护。通常我们都会使用ProGuard来对Apk进行混淆处理,用无意义的字母俩重命名类、成员变量、方法和属性。(当然它能删除一些无用的类、成员变量、方法和属性以及删除没用的注释,最大程度优化字节码文件)

而现在我们一般都采用Android Studio作为开发平台,在该平台下可以很方便的使用ProGuard,在Gradle Script文件夹下,打开build.gradle(Module:app)文件,显示如下:

这里的minifyEnable即为控制是否启动ProGuard的开关,设置为true则开启ProGuard进行混淆和优化。

而proguardFiles分为两部分,前半部分是一个系统默认的混淆文件,位于SDK目录下的tools/proguard/proguard-android.txt,一般情况下使用这个默认的文件即可,另一部分是项目中自定义的混淆文件,可以在项目中的App文件夹中找到这个文件,在这个文件夹中可以定义引入的第三方依赖包的混淆规则。配置好ProGuard后,只要使用AS导出Apk,即可生成混淆后的字节码文件。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

罗德与施瓦茨与SmartViser携手开发了一种用于测试符合欧盟销售的智能手机和平板电脑的新Energy Efficiency Index(EEI)标签法规的解决方案。该解决方案的核心是R&S CMX500,这是...

关键字: 智能手机 Android iOS

(全球TMT2023年8月24日讯)2023年8月23日,时值实时3D引擎Unity在华设立合资公司Unity中国一周年之际,Unity中国正式推出Unity中国版引擎——团结引擎。Unity全球CEO John Ri...

关键字: UNITY CE Android 开发者

报告显示:全球电商 App 获客花费接近50亿美元 北京2023年8月23日 /美通社/ -- 全球营销衡量与体验管理平台 AppsFlyer 近日发布《2023 电商 App 营销现状报告》。尽管面临全球经...

关键字: APPS BSP iOS Android

数字机顶盒是一种数字技术下的多媒体娱乐中心,可以实现电视节目接收、播放、存储、网络应用等多种功能。随着科技的发展,数字机顶盒的设计方案也在不断进步和优化。本文将介绍数字机顶盒设计的几种实现方案。

关键字: 数字机顶盒 Android Linux

21ic 近日获悉,原小米 9 号创始员工李明在社交媒体平台公布了旗下首款产品乐天派桌面机器人,为全球首款 Android 桌面机器人,面向极客和发烧友的 AI + 机器人。据悉,李明两个月前宣布创业并进军 AI 领域,...

关键字: 小米 Android 桌面机器人 AI

尽管安装增长放缓,全球游戏 App 获客花费仍高达 267 亿美元 经济低迷导致 2023 游戏 App 营销优先考虑收入指标,用户增长次之 北京2023年3月9日 /美通社/ -- 今天,全球营销衡量与体验管理平台...

关键字: APPS iOS Android BSP

伦敦, Feb. 23, 2023 (GLOBE NEWSWIRE) -- 英国一家领先的超级跑车租赁公司刚刚推出一种加密货币支付系统,服务全球最出众的超级跑车租赁业务。 目前,客户可以选择以比特币、以太坊加密货币或英镑...

关键字: CLASSIC 加密 AD WIRE

量子计算领域的新里程碑,来了! 谷歌科学家证明,通过增加量子比特的数量,就能降低量子计算的错误率。

关键字: 谷歌 Android Windows

「卫星通讯」正在被普及到每一台智能手机当中。普及的动机并非是消费市场的一个刚需,其实更像是将差异化的功能「抹平」成一个标配。时下,支持「卫星通讯」功能的智能手机只有苹果的 iPhone 14 系列与华为的 Mate 50...

关键字: 卫星通讯 Android 智能手机 iPhone

Android是Google开发的操作系统,支持多种指令集架构 (ISA),包括Arm和x86,多数使用Android的设备都采用Arm架构芯片组。新兴RISC-V架构是免费开放指令集架构,任何人都可用它设计芯片,且无需...

关键字: 谷歌 Android RISC-V架构
关闭
关闭