解包分析用,华为不支持通过zip包安装更新,没法给自己手机用。
更新安装界面:http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/af/v3/ke_6k0vEQVWRq8U5Gx-GyQ/oh_assets.zip
更新包本体:http://update.dbankcdn.com/download/data/pub_13/HWHOTA_hota_900_9/a3/v3/3tlkMNeBSxWqNthH3x2tXQ/full/update_full_base.zip
包里的 UPDATE.APP 用这个工具拆分:https://github.com/marcominetti/split_updata.pl
拆分后可以得到各个分区的镜像,比如 BOOT.IMG、SYSTEM.IMG 等,有的镜像可以在最新版 Linux 系统内挂载(mkdir system; sudo mount SYSTEM.IMG system
)。
SYSTEM.IMG 采用 EROFS,Linux 内核得打开这个文件系统支持才能挂载(已知Arch Linux可以挂载)。
为防链接过期,顺便提供百度网盘下载,附带拆分好的各个分区镜像;此外还附带在next系统USB调试模式(hdc shell)里执行 hidumper 命令的输出(hidumper.txt),里面包含鸿蒙内核的启动参数和系统进程信息;mount.txt则包含系统分区挂载布局。
链接:https://pan.baidu.com/s/12pgwmS-DouwCqIzFGyBpKA?pwd=ot48
提取码:ot48
鸿蒙内核的启动参数:
Hongmeng version: HongMeng Kernel 1.9.3.B030
/proc/cmdline
mntn_switch=011111111111101000101100000000000000011010000010001 last_bootup_keypoint=250 reboot_reason=COLDBOOT exception_subtype=no panic_pc=NA spec_info=0 tz_uefi_enable=1 ohos.boot.vendor.ddrsize=16 dma_zone_only=true swiotlb=2 allow_file_spec_access=true console=ttyS0 sn=2Y中间十二位被移除03 UEFI=true pmu_nv_addr=0x10940000 ohos.boot.odm.conn.chiptype=hisi ohos.boot.odm.conn.schiptype=bisheng ohos.boot.odm.conn.chiptype=hisi enter_recovery=0 enter_erecovery=0 ohos.boot.uapp_ctx.match_nonce=0 efuse_status=0 ohos.boot.vercnt1=0 ohos.boot.trust_nv=0 ohos.boot.untrust_nv=0 ohos.boot.soft_nv=0 ohos.boot.hvb.enable=green ohos.boot.uapp_ctx.auth_role=0 ohos.boot.hvb.version=1.1 ohos.boot.hvb.device_state=locked ohos.boot.hvb.hash_algo=sha256 ohos.boot.hvb.size=31488 ohos.boot.hvb.digest=f2a11f50f75d094be49313ef7e96df8b83bf04dc4b1857d83f3f6b892dff8e8d ohos.boot.reboot_reason=normal ohos.boot.mode=normal ohos.boot.hardware=Kirin9010 ohos.boot.gpu_vendor=higpu.v200 ohos.boot.chiptype=Kirin9010_csv2 ohos.boot.devicename=default hmkernel.console.kernel-disable=2 hmkernel.console.loglevel=4 ohos.boot.modem_enable=1 normal_reset_type=COLDBOOT hw_kpatch=k=1 ro.boot.powerkey_restart_type=1 productid=0x2D085811 productid_unchecked=0x2D085811 cota_productid_unchecked=0xFFFFFFFF vendorcountry=all/cn devmodel=HBN-AL10 userHotaUpdate=success_0 recovery_update=0 check_vc=1 ohos.boot.udid=46中间六十位被移除0A runmode=normal backcolor=black oba_version=20241018012340_OBA_VERSION userlock=locked oemmode=user developer_mode=1 uefilogo_time=6131 bl_time=6657 fg_cali=0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 direct_charger=0,0,0,0 battery_nv_sn=42中间十二位被移除3B boot_detector_enable=1 boot_recovery_enable=1 bopd_mem_sp=on TP_COLOR=210 tpcolor=black usb_macbt=normal NO_KEYCHORDS boardid=13622 ohos.boot.board.boardid=13622 ufs_product_name=SGQ824FEBU0//XCF bootconfig loglevel=4 page_tracker=on fw_devlink=permissive printktimer=0xfb21b000,0x534,0x538 rcupdate.rcu_expedited=1 buildvariant=user default_boot_device=fa500000.ufs ohos.boot.swtype=normal ohos.boot.kernel=hongmeng
视频里提到鸿蒙内核有一个Linux驱动容器,可以在容器内加载Linux内核驱动(.ko),解包发现MODEM_DRIVER.img里面确实有一个modem_driver.ko
,这是我目前发现的唯一一个.ko
。
此外视频还提到鸿蒙内核有能力启动AOSP(安卓框架),所以它肯定实现了很多AOSP需要的Linux内核功能。所以在mount.txt里看到SeLinux这样的东西也不用大惊小怪,这并不能代表 BOOT.IMG 里是Linux内核。(备注:虽然有能力启动,但next系统不附带安卓框架,不过这为VMOS这样的安卓虚拟机app移植到next提供了想象空间。)
目前我还搞不清楚 next 的 BOOT.IMG 里到底是什么东西(虽然理论上来说它应该是鸿蒙内核),但它肯定不是安卓风格的Linux内核(用strings BOOT.IMG
看就能发现它没有安卓Linux内核内置的那一堆字符串,和鸿蒙4.2的 BOOT.IMG 明显不一样)。
更新:在 hidumper.txt 里找到另一个 .ko,of.ko
,是通过以下形式运行的:
devmgr.elf --root-driver of.ko
其中devmgr.elf
似乎就是上面那个视频里提到的 Linux 驱动容器。此外,.ko
作为用户进程运行也反映出鸿蒙确实是微内核架构。
不过这个of.ko
文件具体在哪里还没有找到,可能在 BOOT.IMG 里。
「AVSS研报iOS .Android.鸿蒙安全对抗能力初评报告﹣内核篇
https://mp.weixin.qq.com/s/QjXGDmnmvHyxWzoESsADLg
里面介绍了鸿蒙next微内核的安全特性,以及和鸿蒙4.2及iOS的区别。
未签名的ELF可执行文件在鸿蒙next中不可执行。我试了一下确实执行不了,hdc shell 里执行会报 permission denied。
@真赚ieearn_com,不能,只能在线升级,所以这个包对手机没有用,只是用来在电脑上解包分析的。
@tangwangtot,mt管理器有没有试过。mt2.cn
一加ace2Pro(灰|24+1024)
@tangwangtot,你是说这个鸿蒙next里的system.img吗?它是一个EROFS文件系统镜像,如果你手机root了,你可以尝试直接挂载。
先把它放在 /sdcard/system.img 这个位置,然后打开终端模拟器,输入如下命令:
su
mkdir /data/mount
mount /sdcard/system.img /data/mount
ls /data/mount
如果挂载成功没有报错,就能用mt管理器或者RE文件管理器(Root Explorer)在 /data/mount 这个位置看到 system.img 的内容了。
如果挂载失败,可能是没有root权限,或者手机不支持EROFS文件系统,那你就只能去电脑上安装Linux系统进行挂载了。建议安装ArchLinux系统,已知它默认打开了EROFS支持。其他系统的内核不一定打开了EROFS支持。
回退后数据是不是没了。
一加ace2Pro(灰|24+1024)