版本号没变,不推送更新通道。
shamiko是alpha专版,因为旧版本有兼容性问题,需要一起升级。如果还在用旧版本alpha就别升级。
从完整OTA包提取boot镜像
从微软商店安装python3.12;pip install git+https://github.com/5ec1cff/payload-dumper
payload_dumper --partitions
init_boot https://dl.google.com/dl/android/aosp/husky-ota-ud1a.230803.022.b1-13ff7dfb.zip
即可在output目录找到init_boot.img。
以上示例中init_boot.img为8MiB,总下载大小1.7MiB,用时不到一分钟。
https://developer.android.com/google/play/integrity/additional-tools#check-device
Play Integrity API 自测方法现在有了官方文档,不需要通过第三方app查看测试结果
magisk可能导致设备唯一标识符泄漏
受影响版本:27.0之前所有版本,以及特殊情况下27003以后所有版本
受影响设备:Android11及更高设备
详情
Android11起系统限制用户应用使用netlink的RTM_GETLINK读取网卡mac地址,这是通过自定义SELinux添加标志位实现的,该修改被Linux上游拒绝,是Android特定修改。
在27.0之前,magisk使用上游libselinux库,因此该Android特定标志在修补sepolicy时丢失,导致未能正常启用限制,任何应用都可以读取mac地址。
在27.0后,magisk为所有设备无条件启用限制。但是部分升级了新内核的设备支持处理该标志,用户空间内的sepolicy却没有做好准备,导致全部进程都受到限制,直观表现是无法连接WiFi。
27003起,magisk解析旧sepolicy的标志,复制到新sepolicy,原问题得以解决。
magisk的sepolicy实时修补功能从内核读取当前sepolicy,修补规则后重新加载sepolicy。由于内核存在bug,Android特定标志不会报告给用户空间,magisk读取出的当前sepolicy永远没有此特定标志。因此在sepolicy实时修补后,限制被禁用,所有应用可以读取mac地址。
可以用 https://android-review.googlesource.com/c/kernel/common/+/3009995 修复此内核bug,但补丁由于不明原因被Google要求应该提交给Linux上游,随后又说应该删除此Android特定功能。总之,该补丁目前被Google拒绝合并,我们也无能为力。比起无法连接WiFi,实时修补sepolicy后会泄露mac地址显得可以接受。
利用情况
我们观察到流行应用正在使用RTM_GETLINK获取设备mac地址。至少一个应用通过判断Android11+设备依然能读取mac地址检测magisk。
建议
Android11之前的设备不受影响。其它设备应该升级到magisk 27.0。如果无法使用WiFi,升级到27003。在27003+时,不要使用sepolicy实时修补,检查所有模块和root应用,要求它们的开发者切换到sepolicy.rule。
相关链接
magisk导致mac地址泄露 https://github.com/topjohnwu/Magisk/issues/7636
magisk破坏了WiFi https://github.com/topjohnwu/Magisk/issues/7764
magisk复制Android特定标志到新sepolicy https://github.com/topjohnwu/selinux/commit/48fcf8bba0635dc597bef75994294fd055d9f0ba
内核中Android特定标志的实现(只处理了 policydb_read() 函数,忘记处理 policydb_write() 函数) https://android.googlesource.com/kernel/common/+/dc34c9f193fd4e3476e0e9331f5fdacce6fbc6fc https://android.googlesource.com/kernel/common/+/bdf56fbea560eea1e9c2793d69ba13cca2596d7d
内核修复补丁,处理了 policydb_write() 函数 https://android-review.googlesource.com/c/kernel/common/+/3009995
致谢
aviraxp /channel/qianqianzhuang/33
https://github.com/zybpp/Python/tree/master/Python/keybox/keymaster/PTO19990199012
6年前,真美妙,不是吗?
把 keymaster 和 widevine 的私钥 keybox 当作 Python 文件处理教学的材料,就这样的公开了。
4d5510be-alpha (27001)
https://github.com/LSPosed/Magisk/commits/2ee60b072f5a7b12c183ecd6b09e61e0edec0eb8
d78ee171-alpha (26405)
https://github.com/LSPosed/Magisk/commits/4a84062e3e8a144a2c566ab9186ea658cfb3fa04
https://github.com/topjohnwu/Magisk/blob/master/docs/faq.md
这个文档有误导。
系统检测长按音量减键触发安全模式的功能,写在system_server。此时post-fs-data已经结束,模块加载完毕,zygote都跑起来了。
很多人等待动画出现后才开始按键,他们被文档误导以为系统安全模式会触发magisk安全模式。这是不对的,时间上反了。
要在加载模块之前识别到安全模式,magisk检测按键必须早于系统。出现动画后再按键,已经错过magisk的检测,只会触发系统安全模式。应该在bootloader解锁警告后立即按住音量减,出现动画后反而可以松开——如果不想同时触发系统安全模式的话。
还可以通过prop触发安全模式。开机状态下,长按电源菜单的重启按钮,在「重新启动到安全模式」弹窗上点确定,会设置prop。下次开机时magisk和系统如果读取到该prop会进入安全模式。但它不实用,或者说,对救砖毫无意义。
alpha现在支持自动进入magisk安全模式。如果设备未能正常启动,下次启动时会自动禁用全部模块。这个新功能独立于系统安全模式,可以在magisk应用的重启菜单中勾选来强制触发。
ハッピーバースデー良ちゃん☆
#まちカドまぞく
#吉田良子誕生祭2024
https://twitter.com/fujimatakuya/status/1743652115317207178
1.0 更新内容
隐藏更多Zygisk痕迹,通过更多检测(例如 ACE, GoTyme Bank, MyTransport.SG, ZainCash, DBS PayLah!, Singpass, Marriott, BPI, Apps using liapp, Apps using Arxan like CaixaBank Sign, 等)
更好地支持KSU
隐藏其他模块引入的部分痕迹(例如PlayIntegrityFix)
守护了街角的和平
ca25935d-2-alpha 26403
https://github.com/LSPosed/Magisk/commits/68ec4e33f7dafdce53e9cb8b570f055791733b56
577483fd-alpha 26401
https://github.com/LSPosed/Magisk/commits/5cb71e2a19975277438eaf6654c937c94f8cc406
https://github.com/topjohnwu/Magisk/blob/bb39a524d05f0fb08cf4c8d9698d35e4725563d8/docs/details.md?plain=1#L17-L18MAGISKTMP/.magisk
仅供内部使用,外部app不应该依赖此路径
c6f07625-alpha 27002
https://github.com/vvb2060/MagiskAlpha/commits/45897d2d928127e6e89a3f4e06bc12e1f4c56d98
ASH_STANDALONE=1 /debug_ramdisk/.magisk/busybox/sh
使用技巧,magisk tmp目录内的busybox不需要root权限即可使用
ecc74d45-alpha 27002
https://github.com/LSPosed/Magisk/commits/15615027a2318f2c0a8c68b21cec51be0258c1fa
https://dumps.tadiphone.dev/dumps/nubia/nx651j/-/blob/qssi_NX651J-user-11-RKQ1.200826.002-nubia.20210318.115117-release-keys/vendor/etc/keybox.xml
如果上面还不够随便,这里还有把私钥 keybox 随设备一同发货的品牌。
感兴趣的人可以在各种代码库搜索 NumberOfKeyboxes
,说不定有惊喜呢?
使用可调试的官方Magisk app时,adb shell可以自动获取root权限
run-as com.topjohnwu.magisk
su
希望这个小技巧能对救砖有所帮助
2c6adbc6-alpha (27000)
https://github.com/LSPosed/Magisk/commits/c8c75a52610721ebc95c8c7fb76245b16698373b
https://android.googlesource.com/platform/system/logging/+/6aeeaacedaafab2d7ada57e7bfb75741a0461706
从 Android 13 开始,谷歌为了防止日志过多导致在测试机器错误报告超时,将日志缓冲区大小强制调整为 256 KB。因此,在开发者选项中调整日志缓冲区大小或设定相关 logd prop,实际上不会起到任何作用。
a0b8aa4d-alpha-2 26404
https://github.com/LSPosed/Magisk/commits/37302684f5e4823d9b4fcffa8307d6922da30766
这是一款测试应用,用于测试设备的密钥认证功能,特意不添加网络权限。但很多人欺骗自己,没有意识到自测不是正式检测,它仅通过导入导出功能模拟服务器验证。app甚至不校验结果,而是尽可能展示全部内容。
原定于2.0版本计划支持利用 shizuku 的高权限获取更多证明内容,例如唯一设备标识符,这是app权限无法做到的。可以查看当前设备的唯一标识符是否与出厂时写入TEE的值一致,以识别二手改机等行为。还有三星的 Knox 证明也需要adb权限,可以查看熔断位等状态。
现在以上计划延后,优先加入网络权限。通过与服务器进行TLS双向认证握手,彻底地,完整地,实现全套密钥证明验证。这可以确保网络流量无法被中间人监听或修改,并且确实来自于bootloader上锁设备。bootloader已解锁的设备无法完成 mTLS 握手,客户端证书会被服务器拒绝,无法连接服务器。相当于服务器自动拉黑了全部已解锁设备。
该功能将于2.0版本上线,敬请期待。
PS:我同时指责Google的不作为,把证书管理当过家家。没有起到监督OEM的作用,事后也不弥补过错,及时吊销泄露私钥的证书。
a0b8aa4d-alpha 26404
https://github.com/LSPosed/Magisk/commits/6f6836aef367f02ba5e88239e121f0c6e2c9f4e0
支持应用生成的认证密钥
支持显示证书链
支持RKP信息显示
支持证书链中存在多个认证证书,点按证书旁的info图标手动切换显示
保存的p7b证书链文件可以在Windows上直接打开
更准确的错误情况显示
https://github.com/vvb2060/KeyAttestation/releases/tag/v1.6.0
bb39a524-alpha 26302
https://github.com/LSPosed/Magisk/commits/57f22708ccbd5526f17010acae10e094e06905ed