快速查看当前客户端的 tls 和 h2 握手细节
https://tls.browserleaks.com/tls
https://tls.browserleaks.com/http2
使用场景很有限,基本只能用于 Cloudflare DNS。很久之前pixiv支持无SNI访问,这几年取消了。知名大站都是IP黑洞,不是禁用SNI可以绕过的。至于 ECH,Cloudflare 还有中国业务呢,估计不敢再开。
排查下来,除了 Cloudflare DNS 外只有一个站可用,非常可怜。还是等JDK哪天支持 HTTP3 吧。
https://openjdk.org/jeps/8291976
https://forums.developer.huawei.com/forumPortal/en/home
华为开发者论坛置顶帖子显示华为系统在23年9月1日支持了签名欺骗功能。
MicroG于23年9月15日实现了华为版签名欺骗功能。
https://github.com/microg/GmsCore/blob/master/fake-signature/src/huawei/aidl/com/huawei/signature/diff/ISignatureService.aidl
MicroG同时还实现了第三种签名欺骗系统。即other-signature以及AAAA*和NAVI*元数据。格式是 sha256(<package name>)-sha256(<signing certificate>)
https://github.com/microg/GmsCore/issues/2037
另外,LineageOS 已经官方支持 MicroG 签名欺骗。
https://github.com/LineageOS/android_frameworks_base/commit/6b793fa98a40dd6c2d6eb02988161ed123439428
100~399字重现在被砍了,原因是为了不支持可变字体的游戏引擎能够默认400字重而不是100字重,砍了400以下字重。
https://github.com/notofonts/noto-cjk/commit/07fb9c9a48ec63ba92f7bfd2608ca6fbb01940f1
UAC只有两个模式:始终通知和允许绕过
https://devblogs.microsoft.com/oldnewthing/20160816-00/?p=94105
修复方案
修改fuse,将传入文件路径与底层文件的路径均按照常规方式转换为小写,如果字符串不相等,返回文件不存在。
因为媒体存储设备是apex模块,所以修复后可以立即由play商店推送,无需等待OTA。
修复后,自测方法中仅方法2继续有效,方法1不会发生变化。
方法3两文件名不再能相互访问,但也不能同时存在。
安全警告,Android GKI内核已启用Unicode支持
提交1和提交2为内核添加了Unicode支持。在此之前字符串相同是逐字节比较,忽略大小写比较仅处理26个标准字母。
现在会先执行Unicode规范化,并且去除默认可忽略代码点后再执行Unicode比较,大小写转换也按照Unicode规范执行,与非Unicode有较大行为变化。
/*
* Two normalization forms are supported:
* 1) NFDI
* - Apply unicode normalization form NFD.
* - Remove any Default_Ignorable_Code_Point.
* 2) NFDICF
* - Apply unicode normalization form NFD.
* - Remove any Default_Ignorable_Code_Point.
* - Apply a full casefold (C + F).
*/
/storage/emulated/0/Android/data/com.google.android.gms
,由于 emulated 是 fuse,所以从0开始(包括),可以在任意位置插入默认可忽略代码点,内核自动删除它们。Android14 自带 Cronet 原生支持 HTTP3
https://developer.android.com/reference/android/net/http/QuicOptions.Builder
okhttp虽然用了,但仅仅是测试代码,没有纳入API的计划。Cronet和okhttp的配合似乎没多大希望?
https://github.com/square/okhttp/pull/8302
cs.android.com 分支更新情况
main
https://r.android.com/2686607
2023-08-01 23:22 Merge "Stop supermanifet updates to main (and the master copy-config)." into main
master
https://r.android.com/2771908
2023-10-05 02:51 Turn off superproject updates for master branch.
包含在搜索结果中
main:main
live
包含在搜索结果中,不能切换分支和tag
感觉Google有什么大病
目前还是半成品,只能在userdebug构建的Android14系统上使用。由于文档建议客户端是大屏设备,并且不要求运行Android系统,最终目标应该是在PC上显示app,有和WSA相同的原生操作体验。
Читать полностью…Google 怕不是傻了,把拆分包塞进主包里面。
如图所示,将 com.google.android.gms 的 base.apk 拖出来查看,发现里面还有一份 split 包。
Ignore requestLegacyPermission flag for targetSdk>=V
Previously we were ignoring legacy storage app op for apps with targetSdkVersion>=30 but some OEMs reported regression on Android U.
https://android.googlesource.com/platform/packages/providers/MediaProvider/+/54f543d4b2a652c6ece88d43a91e905aa6293661
这都能吃回去?
apex Android 15 起 android:requestLegacyExternalStorage="true" 在app适配Android15之前都有效
(我猜是三星
okhttp 有两种方法禁用 SNI
第一种用IP替换创建SSLSocket时传入的域名。稳定直观简洁。
第二种正经调用配置SNI的API,对于Android默认JSSE,设置成私有域有禁用SNI的效果,比如lan,但不能是localhost。对于BC JSSE,空列表即可禁用。
需要注意的是,想要禁用SNI必须使用okhttp 5.x版本,否则Android10以下设备会被强制设置SNI。如果必须使用4.x,可以创建SSLSocket后直接握手让okhttp来不及设置,但这也会让TLS版本和ALPN等设置一起失效,需要自行处理,否则旧设备会握手失败。
https://gist.github.com/vvb2060/d51fefce4a269d6becfe298d7b588ff1
演示了两种禁用SNI方法,当然方法2也可以自定义SNI。
小知识:保存到 AccountManager 服务的账号可以在清空应用数据后留存。Google、Microsoft、Amazon、Twitter、Facebook都支持这一功能,GitHub和Telegram虽然在 设置-账号 有显示,但不支持。
Читать полностью…termux 已恢复更新,使用自定义链接器绕过w^x限制,因此静态构建的文件无法执行。
termux 通过手动加载文件到内存执行,达到了仅需 execute 权限的目的。
背景知识:执行文件在不触发域转换时还需要 execute_no_trans 权限,Android 仅限制了这一个权限,没有限制 execute 权限,因为 dlopen 需要它。虽然dlopen也是一种w^x违规,但Android目前只是记录警告日志,没有禁止。
另外:termux 已有3个版本,GitHub上的Android5+和Android7+,以及Play上的Android11+。
现在apk还会塞入版本控制系统的ID号,即git的HEAD sha
https://cs.android.com/android-studio/platform/tools/base/+/ddc562b75e6d77e6e40efb8fd6366c220b876298
在查看最新代码的情况下能切换分支和标签
https://cs.android.com/android/_/android/platform/frameworks/base
https://cs.android.com/android/_/android/platform/frameworks/native
自测方法
方法1,需要电脑 adb shell zcat /proc/config.gz | grep UNICODE
如果存在 CONFIG_UNICODE=y 表示受影响。
方法2,不需要电脑,需要终端应用ls /storage/emulated/0/Android/data/
复制以上命令,因为在0的后面有一个零宽空格。如果文件夹正常列出,表示受影响。如果显示找不到文件,表示不受影响。
如果显示没有权限,表示零宽空格丢失,可能是终端应用行为,请更换其它终端测试。
REQUIRE_SECURE_ENV 标志说明
https://support.google.com/googleplay/android-developer/answer/13609005
非常乐,感觉…不如加固,毕竟
没有任何技术功能可以阻止设备端 Android 容器应用加载您的应用Читать полностью…
Windows / Office 正式版下载
https://massgrave.dev/genuine-installation-media
从官方更新服务器自定义安装 Windows
https://uupdump.net
从官方更新服务器自定义安装 Office
https://github.com/YerongAI/Office-Tool/releases
(itellyou 还是算了吧,有登录墙
在WSA死掉后,Google的PC Android模拟器有了 houdini 支持。
基于Android 14,需要Google账号,和WSA一样依赖Windows Hypervisor Platform,但只需要 Windows 10 (v2004)。
用户版的Play完整性保护级别是特供的虚拟级,不能侧载,不能打开非白名单应用。下载:https://play.google.com/googleplaygames
开发者版的Play完整性保护级别是空,但没有root,可以开启adb安装运行任意应用。目前暂无root手段。下载:https://developer.android.com/games/playgames/emulator
与远程设备配对使用 CompanionDeviceManager 建立安全传输通道。在user构建的系统上,使用密钥证明验证远程Android客户端。
这是密钥证明的官方验证实现:
https://cs.android.com/android/platform/superproject/+/main:frameworks/base/services/core/java/com/android/server/security/AttestationVerificationPeerDeviceVerifier.java