HarmonyOS取证初探
共 3886字,需浏览 8分钟
·
2021-05-13 06:32
关于HarmonyOS(鸿蒙),相信大家在之前的各类新闻报道上都有所了解。从取证角度,现阶段HarmonyOS的取证,我们可以从哪些方面入手,又有哪些新的挑战呢?
小编在此之前很早就申请了HarmonyOS 开发者Beta公测,在五一期间,终于收到了版本推送。目前的最新版本是2.0.0 Developer Beta2(2.0.0.53),下文也以此系统版本为准。
HarmonyOS介绍(By 官文)
HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备。
对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。
对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。
HarmonyOS提供了支持多种开发语言的API,供开发者进行应用开发。支持的开发语言包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。
HarmonyOS手机取证
USB调试如何打开
与正常Android手机操作无异,关于手机-点击版本号6次-输入锁屏密码,即可打开开发者选项。
手机数据提取&分析
使用数据线连接手机后,可以看到雷电手机快取已经能够识别到这个设备,并检测操作系统为HarmonyOS,尝试使用高级备份进行应用数据的提取。
![40223dfa0aac6afe7ee01e8e68080438.webp](https://filescdn.proginn.com/dc9a96acafe1f91e6cb019da912db903/40223dfa0aac6afe7ee01e8e68080438.webp)
看到这里,相信您会觉得Harmony取证跟Android也没什么区别。
Harmony应用提取难点
![d5a31243fe52b605b974f705c98fadc1.webp](https://filescdn.proginn.com/4d47b2408fa9a4e40af8fc4afde8ea96/d5a31243fe52b605b974f705c98fadc1.webp)
如下图所示,左侧为Android版本,右侧为Harmony版本。
Harmony与Android应用区别
应用安装包导出
首先要对比两者的区别,需要先把Harmony的三个应用安装包进行导出,常规的Android应用我们可能最常用的就是使用ADB命令
adb shell pm list package
adb shell pm path com.TestApp
//com.TestApp是想要导出的包名
adb pull /system/priv-app/DeviceTest/DeviceTest.apk C:\Users\Administrator\Desktop\
// App在手机中的存放路径: /system/priv-app/TestApp/TestApp.apk
// App导出的目标Apk在PC端的存放路径 C:\Users\Administrator\Desktop\
或者可以通过雷电手机快取中的导出安装包功能,快速导出(只需要知道应用名称,不需要知道应用包名)。
![a229128455a1c2b011c52f6bd53f6056.webp](https://filescdn.proginn.com/5871400ee85f254a5651cc5f0a9ae5b9/a229128455a1c2b011c52f6bd53f6056.webp)
但是在Harmony系统上这两种方式都没有成功,最后尝试使用一个APK提取器的小工具,成功得到了三个应用安装包。
![e03b1222fe83606bc80d22147bad78d7.webp](https://filescdn.proginn.com/e2efec7381690866b42293e3acd8a6a5/e03b1222fe83606bc80d22147bad78d7.webp)
Harmony安装包
如上图所示,我得到的是一个apk文件,尝试着安装到别的Android手机上后,应用会闪退。
通过对Harmony应用开发的了解,原因可能如下:
HarmonyOS的开发工具叫做DevEco Studio,和Android Studio一样,也是基于IDEA。
安装DevEco Studio后,可以尝试创建一个手机示例应用,下载依赖,编译完成后,可以得到一个hap文件,这个文件其实就对应了Android系统中的apk文件。
解压hap后,可以发现除了常规的文件外,Android的manifest文件变成了config.json,另外hap中还存在一个apk文件。
![7f297768336299762bcd1569c235bb3f.webp](https://filescdn.proginn.com/cd16b5f9a4c86cdb1fe6b0c93745378e/7f297768336299762bcd1569c235bb3f.webp)
解压apk后,可以发现这是一个标准的apk,但是单独安装到Android手机上后,也出现了闪退的情况。
![477a009e4127d21f7fd0ba00dae81e5b.webp](https://filescdn.proginn.com/8721490be375b59cc6fba71095dfb74e/477a009e4127d21f7fd0ba00dae81e5b.webp)
使用ADB查看日志后可以发现
05-11 15:22:53.334 7450 7450 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "ohos.abilityshell.HarmonyApplication" on path: DexPathList[[zip file "/data/app/com.example.HMDemo-THrK3d5xftGaJlBnx92w_A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.hello_hm-THrK3d5xftGaJlBnx92w_A==/lib/arm64, /system/lib64, /product/lib64]]
05-11 15:22:53.334 7450 7450 E AndroidRuntime: at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:230)
05-11 15:22:53.334 7450 7450 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
05-11 15:22:53.334 7450 7450 E AndroidRuntime: at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
05-11 15:22:53.334 7450 7450 E AndroidRuntime: ... 16 more
Didn't find class,这个apk应该是因为调用了Harmony的新增的framework,所以在Android系统上无法运行。
猜测可能目前阶段,Harmony为了兼容Android的应用生态,做的一个妥协,后续等完全脱离Android,就不需要这个apk文件了。
.app、hap和apk的区别
.app文件:HarmonyOS应用发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(HarmonyOS Ability Package)包以及描述APP Pack属性的pack.info文件组成。一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用清单文件组成,可以分为Entry和Feature两种类型。
hap:hap是Ability的部署包,HarmonyOS应用代码围绕Ability组件展开,它是由一个或多个Ability组成。Ability分为两种类型:FA(Feature Ability)和PA(Particle Ability)。FA/PA是应用的基本组成单元,能够实现特定的业务功能。FA有UI界面,而PA无UI界面。
简单理解下来,Ability就是组件,FA对应安卓的Activity,PA对应安卓Service。Ability加上资源文件打包起来就是hap,对应安卓的apk。
使用jadx查看,可以看到央视影音鸿蒙版Ability的用法
Harmony项目
Harmony项目虽然跟Android很类似,但是项目的布局文件和源码,UI部分代码需要完全重写,不可能兼容Android的Layout和控件。大部分的API都太不一样。如果一个应用不是以Android兼容模式运行,现成的应用要想移植到Harmony,工作量还是很大的,基本上等于要重写。
所以想要期待目前主流应用后续能够很快迁移到Harmony,减少应用的存储、内存占用,路程还比较艰辛。
总结和展望
目前阶段,相信大部分应用在Harmony上还将会是Android兼容模式运行,通过现有取证方式,都是可以很好的进行支持。
难点在于Harmony应用的提取和分析,如果后续主流应用推出鸿蒙版,对于手机取证会是一个新的挑战,以及后续HarmonyOS带来的物联网、车辆网设备的取证和分析。
不过Harmony手机应用的迁移成本比较高,主流手机应用厂商是否愿意加入Harmony这个新的生态还要拭目以待。