还有什么网站可以做面包车拉货,wordpress插件预订,百度提交网站入口网站,网站微信推广怎么做apk 文件结构
首先是 apk#xff0c;即安卓程序的安装包。Apk 是一种类似于 Symbian Sis 或 Sisx 的文件格式。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 而 apk 文件实际上就是一个 MIME 为 ZIP 的压缩包#xff0c;只不过后缀名进行了更改。…apk 文件结构
首先是 apk即安卓程序的安装包。Apk 是一种类似于 Symbian Sis 或 Sisx 的文件格式。通过将 APK 文件直接传到 Android 模拟器或 Android 手机中执行即可安装。 而 apk 文件实际上就是一个 MIME 为 ZIP 的压缩包只不过后缀名进行了更改。
我们可以直接把 .apk 后缀的文件修改成 .zip 后缀的压缩包格式然后解压后就可以看到内部的文件结构就像下面这样 文件夹结构说明
assets 文件夹保存一些额外的资源文件如游戏的声音文件字体文件、图片等等在代码中可以用 AssetManager 获取 assets 文件夹的资源。lib 文件夹存放用 C/C 编写的用NDK编译生成的 so 文件供 java 端调用。META-INF 文件夹存放 apk 签名信息用来保证apk包的完整性和系统的安全。在 IDE 编译生成一个 apk 包时会对里面所有的文件做一个校验计算并把计算结果存放在 META-INF 文件夹内apk 在安装的时候系统会按照同样的算法对 apk 包里面的文件做校验如果结果与 META-INF 里面的值不一样系统就不会安装这个 apk这就保证了 apk 包里的文件不能被随意修改和替换。比如拿到一个 apk 包后如果想要替换里面的一幅图片一段代码 或一段版权信息想直接解压缩、替换再重新打包基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度有助于保护系统的安全。res文件夹存放资源文件包括iconxml布局文件AndroidManifest.xml文件应用程序的清单文件每个应用都必须定义和包含的它描述了应用的名字、版本、权限、引用的库文件等信息。classes.dex文件传统 Class 文件是由一个 Java 源码文件生成的 .Class 文件而 Android 是把所有 Class 文件进行合并优化然后生成一个最终的 class.dex 文件。它包含 APK 的可执行代码是分析 Android 软件时最常见的目标。由于 dex 文件很难看懂可通过 apktool 反编译得到.smali文件smali文件是对Dalvik虚拟机字节码的一种解释也可以说是翻译并非一种官方标准语言。通过对smali文件的解读可以获取源码的信息。当然 你也可以通过dex2jar工具将 classes.dex 文件转化为 jar 包然后再通过 jadx 或者 jd-gui 可以查看 jar 包里面的代码。一般软件开发者会对 classes.dex 进行加固防止别人轻易反编译resources.arsc文件二进制资源文件如字符串常量就会存放在 strings.xml 中。smali:smali是将Android字节码用可阅读的字符串形式表现出来的一种语言,可以称之为 Android 字节码的反汇编语言。利用 apktool 或者 Android Killer反编classes.dex文件就可以得到以smali为后缀的文件这些 smali 文件就是 Dalvik 的寄存器语言。 简单的说smali就是Dalvik VM内部执行的核心代码,andorid逆向分析的关键点。
下载 apktool
可在下面两种下载中选择一种方式下载
apktool github发下页面 apktool 下载
我这里使用的是 apktool_2.9.1.jar 版本
使用 apktool 反编译 apk
将 apk 安装包和下载的 apktool 放在同一目录。 假如我的安装包叫 base.apk ,我想把它反编译到 test 文件夹下反编译命令如下
java -jar apktool_2.9.1.jar d base.apk -o test将会自动新建一个 test 文件夹将反编译后的文件放里面。
参考 Android 逆向入门保姆级教程 静态分析android程序之阅读smali代码 为什么有些APK解包后没有DEX文件