Android App的安全基础

admin 2022年1月23日15:11:27评论68 views字数 1665阅读5分33秒阅读模式
Android App的安全基础
APP 代码编写

Android App 主要采用Java 编程语言编写, 包括Activity、Service、Broadcast Receiver 、 Content Provider 四大组件。Android App 的编译过程与一般的 Java App 不同,但开始方式是一样的:使用 Javac 命令将 Java源代码文件编译成class 文件,如下所示:

Android App的安全基础

例如,创建一个测试程序 Test.java ,在cmd 环境下使用 Javac Test.java 命令将下面的Test.java 源代码生成Test.class 文件( 该文件属于标准的Oracle Jvm Java字节码)

public class Test{  public int add(int a ,int b){    return a + b;  }  public static void main(String[] args) {    Test test = new Test();    System.out.printf(test.add(1,2));  }}

Android App的安全基础

然后使用javap -c Test.class 命令查看上面的Java代码对应的Java 字节码,示例如下

Android App的安全基础

Android App的安全基础
转成 Dalvik 格式

但是,Android 系统APP 并没有使用标准的Java 虚拟机来运行, 而是通过自带的 Dalvik 虚拟机来运行。与 Java虚拟机的字节码不同, Dalvik 虚拟机有自己独特的字节码格式,即两个虚拟机的机器指令集不同, 因此 , 通过 javac 编译生成的 class 文件无法在 Dalvik 虚拟机上运行。

开发者需要使用Android 系统的 dx 命令(位于 sdkbuild-tools路径下), 将 class 文件和所有的jar包转成符合 Dalvik 字节码格式的 classes .dex 文件。

Android App的安全基础

在这里我采用降低jdk版本的方式, 不然的话会报错,版本不支持

javac -source 1.6 -target 1.6 first.java

然后使用dx命令把生成的class文件编译成classes.dex 文件

dx --dex --output=classes.dex  Test.class

注意:--dex 这是双横线, 需要把 class 文件放在dx 的目录下

Android App的安全基础

使用 jadx-gui 打开dex文件, classes.dex 对应的 Dalvik字节码形式如下

Android App的安全基础

Android App的安全基础
APP打包

classes.dex 文件可以理解为 Android APP的可执行文件,核心的代码都在这个文件中。不过classes.dex 文件并不是安装文件, 为了便于安装,Android 将APP打包成类似于 Zip压缩文件的 APK文件。

一个APK文件并不仅包含APP的所有代码,而且还包含所有的非代码资源,如图片、声音等等。使用 Android SDK 中的打包工具或者 Android 系统的 aapt 命令, 能够将 classes.dex 文件和 APP 涉及的资源(如图片文件和 布局描述文件等)打包成 APK 文件(即安装包)

Android App的安全基础

Android App的安全基础
APP的签名

通过Google Play 或者第三方应用商店发布APP安装文件之前, Android 系统要求开发者对APP文件进行数字签名:一面对APP 负责, 实现APP的可溯源;另一方面,便于操作系统在安装时利用数字签名校验文件的完整性和准确性,实现APP的防篡改

对于APP包进行签名的过程是,使用开发者的私钥对 APK 安装包中的所有文件进行校验,并将生成的信息作为一个附加的签名文件内置于 APK 安装包中。

jarsigner 是 Java 开发工具包中常用的签名工具, 专门为 jar 包进行签名而创建,也可以用于对 APK 文件进行签名。Android 系统中压缩文件的字节是对齐的, 可以在不解压文件的情况下读取文件的内容, 所以在APK签名之后, 开发者需要使用压缩文件对齐工具 zipalign 进行处理,保证 APK 文件的压缩部分在字节边界上是对齐的。

Android App的安全基础

Android App的安全基础
往期文章

Android App的安全基础

点个“在看”不失联

原文始发于微信公众号(无界信安):Android App的安全基础

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月23日15:11:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android App的安全基础http://cn-sec.com/archives/746797.html

发表评论

匿名网友 填写信息