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
系统调用清单
https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/syscalls/
错误号清单
https://www.chromium.org/chromium-os/developer-library/reference/linux-constants/errnos/
官方通用系统调用清单
https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/unistd.h
Android系统调用清单
https://cs.android.com/android/platform/superproject/+/main:bionic/libc/SYSCALLS.TXT
Android libc符号清单
https://cs.android.com/android/platform/superproject/+/main:bionic/libc/libc.map.txt
https://android-review.googlesource.com/q/topic:%22unlocked-only-storage%22
正在开发的新功能,可能会在Android 15上线
在现有的 /data/user 凭据加密存储和 /data/user_de 设备加密存储外,新增 /data/storage_area 锁屏加密存储。
该存储空间内的文件,只能在解锁屏幕后打开。屏幕锁定期间无法打开文件,应用进程只能使用现有文件描述符。
Android 远程 lldb 连接记录
PC 端
adb push ndk\toolchains\llvm\prebuilt\windows-x86_64\lib\clang\17\lib\linux\aarch64\lldb-server /data/local/tmp
Android 端
su
cd /data/local/tmp
chmod +x lldb-server
./lldb-server p --server --listen unix-abstract:///debug
supolicy --live "allow adbd magisk unix_stream_socket connectto"
或者使用路径模式
./lldb-server p --server --listen unix://debug
chmod 666 debug
chcon u:object_r:magisk_file:s0 debug
PC 端
cd ndk\toolchains\llvm\prebuilt\windows-x86_64\python3
..\bin\lldb
(lldb) platform select remote-android
(lldb) platform connect unix-abstract-connect:///debug
如果使用路径模式
(lldb) platform connect unix-connect:///data/local/tmp/debug
等等,没有完全反编译确认细节。小米也可能不是把JSON送进TEE让TA填充 unlock_l2 字段然后签名。如果仅仅在用户空间从TEE获取解锁状态,这可以被定制内核篡改。
(以我对这套系统的草台程度判断,不是没有可能
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相同的原生操作体验。
Читать полностью…Android官方支持多屏协同,可以让app在远程客户端上显示,示例项目:
https://cs.android.com/android/platform/superproject/+/main:development/samples/VirtualDeviceManager/
chrome 122 可以关闭 JIT 了
相关阅读 https://microsoftedge.github.io/edgevr/posts/Super-Duper-Secure-Mode/
https://github.com/Chainfire/injectvm-binderjack/blob/master/README.md
SUI 和 LSPosed 的实现原理
// 现在看来,用cmd su替换su也不是多麻烦吧
https://issuetracker.google.com/37097003
Option to override / discard consumer proguard configs from libraries
最近几个月 gradle 本体下载是不是变慢了?因为从2023年9月26日起,下载链接301到了GitHub Release。
https://github.com/gradle/gradle-distributions/releases
(怎么你也没钱了
小米的澎湃搞了一个和 Key Attestation 有点类似的东西,不过只能看是否解锁bootloader,全程使用 json,乏善可陈。硬件层接口的包装器在 com.xiaomi.trustservice 这个app里面,没开R8混淆,接口设计一目了然。
小米没有公布验签算法和公钥,需要上传到小米服务器才能知道签名是否正确,没意思。
https://dev.mi.com/distribute/doc/details?pId=1746