首页
社区
课程
招聘
[原创]移动应用安全与风控——应用的安装
发表于: 2023-5-29 13:57 23312

[原创]移动应用安全与风控——应用的安装

2023-5-29 13:57
23312

       Android应用程序的安装包本质是后缀为apk的压缩包,里面包含了应用运行时所需的资源和依赖库等。程序安装就是把压缩包中的文件和依赖库资源拷贝到系统相应目录,然后在桌面创建应用图标。那么Android应用的具体安装过程是不是这样的呢?本节将为大家详细讲解。
       应用安装过程中将会涉及到的目录,如下图所示:
图片描述
       应用安装是系统默认是将其安装到/data/data目录,如果想将应用安装到SDcard中,可以在应用的配置文件中AndroidManifest增加android:installLocation属性,将该属性的值设置为“preferExternal”或“auto”。具体如下所示:

应用安装流程可以分为六步:
       第一步:应用安装时通过DefaultContainerService将自身拷贝至/data/app/package/目录中,动态库则拷贝至/data/app/package/lib/目录中。如果系统是Android6.0及以上的将应用中的dex文件拷贝至/data/app/应用包名/oat/目录,并进行优化处理。Android6.0以下将应用中的dex文件拷贝至/data/dalvik-cache目录,以便在应用程序启动时快速加载和执行。。
       第二步:解析安装包中的资源文件进行签名校验,将AndroidManifest.xml文件中读取到的应用信息写入到/data/system/packages.xml文件。
       第四步:在/data/data/package/目录中创建程序所需的数据目录,并将应用数据拷贝至相关目录中。
       第五步:将AndroidManifest.xml文件中声明的组件信息注册到PackageManagerService。
       第六步:通过Launch应用将应用图标添加至桌面,至此完成应用安装。通过系统发送应用完成安装广播。
       具体安装流程可看下图:
图片描述

       iOS的安装文件后缀为ipa,相对Android系统来说iOS系统是封闭的,无法像Android一样随意安装应用。不过iOS的安装文件本质上也是一个压缩文件,里面包含了应用运行时所需的资源和依赖库等。同Android的安装的过程类似也是把压缩包中的数据和依赖库拷贝到相应目录,然后在桌面创建应用图标。
       iOS的应用安装时通常会涉及到四个文件目录:Documents、Library、tmp和应用的安装目录AppName.app。文件目录所在位置和用处如下表
图片描述
       iOS系统提供了三种应用安装途径:App Store安装、TestFlight安装和itemServices协议安装。这三种安装方式除了最开始的调用方式不同外,最终都是由系统的安装服务进行安装处理。
       App Store和TestFlight都是苹果官方的应用分发平台,不同之处在于App Store是用于正式应用的分发,TestFlight是苹果提供给开发者用于内测的分发平台,不是每个用户都有权使用TestFlight安装应用,需要开发者发出邀请才可以,建议安装应用时首先考虑使用App Store方案安装应用。通过App Store安装应用的流程如下所示:
图片描述
itemServices是苹果推出的一种协议,基于此协议开发者可以建立自己的企业版应用的分发平台绕过上架App Store的限制。itemServices配合plist文件构造一个网页,用户使用浏览打开该页面便可下载安装应用,具体示例如下图所示:

       使用此种方式安装应用在第一次打开时需要手动信任开发者的证书,否则应用将无法通过苹果的安全校验也就无法运行。
图片描述
       通过itemServices协议安装应用的流程如下图所示:
图片描述

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
  <a href='itms-services://?action=download-manifest&url=http://www.demo.com/demo.plist'>Demo</a>
  </body>
</html>

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-10-9 20:09 被FIGHTING安编辑 ,原因:
收藏
免费 6
支持
分享
最新回复 (4)
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
666
2023-5-29 15:52
0
雪    币: 2334
活跃值: (10385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
终于更新了啦
2023-5-31 09:32
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4

Android6.0以上将应用中的dex文件拷贝至/data/dalvik-cache目录,应该是 Android6.0 以下。

最后于 2023-10-8 17:53 被mb_ocblkbwi编辑 ,原因:
2023-10-8 17:53
0
雪    币: 1317
活跃值: (4121)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
mb_ocblkbwi Android6.0以上将应用中的dex文件拷贝至/data/dalvik-cache目录,应该是&nbsp;Android6.0 以下。
审核时没注意,已修改,感谢指正
2023-10-9 20:10
0
游客
登录 | 注册 方可回帖
返回
//