美文网首页琴梨梨的小教室琴梨梨的日常
APP魔改行动1-APK文件的主体结构

APP魔改行动1-APK文件的主体结构

作者: 琴梨梨 | 来源:发表于2018-02-04 11:35 被阅读319次

琴梨梨终于放寒假啦!虽然作业超级多,但是琴梨梨还是计划每天给大家一篇教程。

在魔改一个APP之前,首先要做的就是看看有什么可以改的,也就是说,改包还需先拆包,所以我们必须从拆包入手。


APK文件本质是一个zip压缩包,我们可以看到头部标识为PK,和zip格式一样

apk文件头部标识

所以我们可以用任意支持打开zip的工具打开apk,打开后我们可以看到下面一堆文件夹和文件

以琴梨梨修改的轻贴吧为准

其中必须存在的是AndroidManifest.xml,这个文件记录了所有声明。这个文件并非以正常xml格式保存,必须通过反编译才能正常显示,否则打开是乱码。

AndroidManifest.xml

在绝部分APP内,都存在至少一个dex文件以及只有一个的arsc文件

arsc文件记录了资源的对应值,经常看到的7f0x就来自这个文件

一个arsc文件

dex文件是程序的代码部分,以smali语言保存,smali是一种高度接近机器语言的语言,在编译apk时所有java代码都会转为smali,这有助于改善性能,因为java直接执行的效率并不高。

smali的上手难度并不高,但是要想彻底看懂,还要费一点功夫,高度接近机器语言也导致会把代码拖得很长,需要有足够的耐心分析。

smali语言

META-INF文件夹保存了签名信息,我们常说的核心破解,破解的就是对这个文件夹里文件的检验,一些APP会读取这里的文件检测是否和原版匹配来减少改包(但是完全阻止改包是不可能的)

这个文件夹我们在改包的时大部分时候都可以完全不去动它,除非需要制作核心破解专用安装包

META-INF文件夹

lib文件夹存放了一些native库,这个文件夹并不是每个apk都有,如果apk不需要引用,它可以不存在,由于native类语言需要针对不同架构编译,这里的库并不能跨架构通用

lib目录

点开某一架构的文件夹,里面就是已经编译好的so文件

几个so文件

支持的架构决定了APP可以安装在什么架构的设备上,也决定了APP的运行效率。比如仅支持arm64,在armv7和x86的设备上就不能使用,仅支持x86,那么在arm和mips设备上都不能用,x64设备上也只能以32位运行。

不过native库不仅仅可以存在lib文件夹内,还可以存在于assets目录。

assets目录是个可选存在的目录,用于存放一些额外的资源。这个目录啥都可以放,并且可以轻松调用,这里面的内容往往很复杂,怎么判断里面的文件类型和作用会在接下来的教程里提到。

assets目录

res目录一般情况是必须的,它保存了APP的绝大部分资源文件(当然也可以修改arsc重定向,然后资源文件全都丢到其他位置),但是这个目录也可以以其他形式存在,比如在混淆包里,它就是r目录。

这个目录里面往往存在大量子目录,一般分下面几个。

anim:动画xml,声明动画

color:色彩xml,定义色彩

drawable:元素样式,可以是xml也可以是图片

layout:界面布局文件,只能是xml

xml:一些其他xml文件

menu:菜单xml,定义菜单项

raw:其他类型的资源,啥都可以放,区别于丢在assets目录,丢在这里的资源在arsc文件里也有一条记录

文件夹后面可加后缀,比如-v21之类的,声明指定在某种设备/环境下使用。比如常见的

-mdpi,-hdpi,-xxhdpi:不同dpi设备使用,往往为了在碎片化的安卓设备上都能正常显示

-v16,-v17,-v25:不同Android SDK版本使用,也就是不同系统版本使用,用于兼容新特性同时兼容老系统

-land,-port:landscape和portrait的缩写,横竖屏的区别

res目录

了解了这些文件布局,对我们今后的魔改很有帮助

相关文章

  • APP魔改行动1-APK文件的主体结构

    琴梨梨终于放寒假啦!虽然作业超级多,但是琴梨梨还是计划每天给大家一篇教程。 在魔改一个APP之前,首先要做的就是看...

  • 小程序官方开发文档学习(一)-- 配置

    文件结构配置-app.json配置-page.json 文件结构 主体部分有三个文件组成:app.js(逻辑)、 ...

  • 微信小程序笔记 - 框架

    目录结构:包含一个app和多个page。一个框架程序主体包含三个文件,必须放在项目根目录:app.js(逻辑), ...

  • 小程序目录结构

    小程序目录结构 文件结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。一个小程序主体部分...

  • 2. 小程序:文件结构

    文件结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。 一个小程序主体部分由三个文件组成...

  • 微信小程序大体框架

    文件结构 框架程序包含一个描述整体程序的app和多个描述各自页面的page。 一个框架程序主体部分由三个文件组成,...

  • 2.微信小程序-B站:需要先知道这些

    文件结构 小程序包含一个描述整体程序的 app 和多个描述各自页面的 page。一个小程序主体部分由三个文件组成,...

  • 微信小程序入门总结

    一、目录结构 1.1 主体(app) 由app.js、app.json、app.wxss组成,包括小程序的注册、全...

  • 一个新工程的创建流程

    文件结构 文件的结构以主目录按照模块分类,内目录按照业务分类的模式创建 Classes (主体代码所在)AppDe...

  • SwiftUI App 基础使用(教程含代码)

    App 表示应用程序的结构和行为的类型。 使用教程 通过声明符合App协议的结构来创建应用。实施所需的主体计算属性...

网友评论

本文标题:APP魔改行动1-APK文件的主体结构

本文链接:https://www.haomeiwen.com/subject/rrguzxtx.html