Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
216 - Telegram Web
Telegram Web
冷知识:Android 中的非 root 用户也可以用系统 shell 命令,如 am pm 等。

在 termux 等虚拟终端中使用 pm 等命令会提示 service: Failure calling service xxx (图1),这并非是说普通 uid 不可使用 shell command ,实际上是因为 shell command 是一个 binder 调用,它会发送调用进程的 stdin, stdout, stderr ,也就是 fd 0, 1, 2 到系统服务,但是如果这三个 fd 有某个是系统服务无法访问的,就会导致 binder 调用失败。一般来说,SELinux 会导致 fd 传递失败。app 域的 devpts 是无法被系统服务访问的,因为没有相关的规则。

因此在没有任何特权的情况下访问 shell command 的正确姿势是提供系统可访问的 fd ,一般来说 app 域的 pipe 都可以被系统访问,因为系统和 app 可能需要通过 pipe 通信。在 shell 中最简单的方法如下(图 2):

pm </dev/null 2>&1 | cat

思考题(请大家思考,欢迎留言):
0. 这样访问 shell command 是以 shell 的身份还是 app 的身份?是否构成安全威胁?
1. 重定向到文件是否可以正常访问 shell command?App 私有存储(/data)或者扩展存储(/sdcard) 哪一个可用?
2. pm install 命令对传入的 apk 路径同样有权限的要求,请尝试解释原因。
3. 为什么安装了 ksu 或 apatch 后上述限制就消失了?

相关
This media is not supported in your browser
VIEW IN TELEGRAM
Zygisk-Next-1.0.5-305-d463cbb-release.zip
1.7 MB
Zygisk Next 1.0.5 正式版
- 提升稳定性
- 更友好的 WebUI 界面

Zygisk Next 1.0.5 Stable Release
- Improve stability
- More friendly WebUI interface

real5ec1cff
This media is not supported in your browser
VIEW IN TELEGRAM
5ec1cff
附 WebUI 界面演示
还是那句话:WebUI 内容仅供参考,运行起来没什么问题就不要纠结 UI 上面写了什么,谢谢合作。
Forwarded from 小页页的胡言乱语 (canyie 🏳️‍⚧️ | 愿你开开心心)
https://www.tgoop.com/nagram_channel/2256

The person mentioned in that message is also a friend of mine. If you have spare money and want to help him, you can click on that message and donate him. Thank you for your generosity! Wish him a speedy recovery 🙏
这条消息中提到的人也是我的一位朋友。如果您有闲钱想帮助他,可以点击原消息捐赠。感谢您的慷慨解囊,愿他早日康复 🙏
https://github.com/5ec1cff/payload-dumper

给 payload dumper 做了一些小修改,让它更加便于使用,尤其是提取 boot 。

首先,现在它可以直接从包含 payload.bin 的 zip 中解压分区,这样你就不需要完整地解压整个 zip 提取出 payload.bin 了,而脚本本身也不会临时解压整个文件。

不过更重要的是,它现在支持从网络提取。只需要提供一个完整包的 url ,它就可以直接在线解压指定的分区,而无需下载整个完整包(当然,需要服务器支持部分请求也就是 Range)。这样就无需为了提取几十 M 的 boot 而下载几个 G 的完整包了。

上图是从 ota 更新地址提取 hyperos 的 boot 镜像,只需要传输 15 MB 左右的数据(因为 boot 是压缩存储的,实际大小 192M),大大节省了时间和空间。
https://afdian.com/a/5ec1cff
https://afdian.net/a/5ec1cff

前段时间开通了爱发电,如果你喜欢我所做的工作,想要支持我继续的话,不妨花 5 元请我一瓶快乐水🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
5ec1cff pinned «https://afdian.com/a/5ec1cff https://afdian.net/a/5ec1cff 前段时间开通了爱发电,如果你喜欢我所做的工作,想要支持我继续的话,不妨花 5 元请我一瓶快乐水🥰»
5ec1cff
https://github.com/5ec1cff/payload-dumper 给 payload dumper 做了一些小修改,让它更加便于使用,尤其是提取 boot 。 首先,现在它可以直接从包含 payload.bin 的 zip 中解压分区,这样你就不需要完整地解压整个 zip 提取出 payload.bin 了,而脚本本身也不会临时解压整个文件。 不过更重要的是,它现在支持从网络提取。只需要提供一个完整包的 url ,它就可以直接在线解压指定的分区,而无需下载整个完整包(当然,需要服务器支持部分请求也就是…
发现获取某些分区的时候仍然存在需要下载大量数据的问题。

经调查,发现原因是 python 的标准库 zipfile 直到 3.12 才支持在未压缩的 zip 中快速 seek 。在此之前, seek 的实现必须要完整读取 seek 到的位置之前的内容,这可能是由于压缩数据流必须完整读取才能解压。

不过 ota 更新包中的 payload.bin 在 zip 中往往是未压缩,并不需要完整读取。这意味着,在 python 3.12 之前,假如要读取的分区所在偏移恰好非常大,则仍然需要下载很多不必要的数据。

综上,建议使用 python 3.12 运行该程序以获得最佳性能。
这段 proc maps 解析代码存在什么问题?

1. 垂悬指针(L45-46,L33-34,L19-20)
2. 可能的缓冲区溢出(L36, sscanf %s 未指定宽度)
3. buffer 分配过多或过少(L32, 5 足矣,L33, PATH_MAX=4096)
4. 逻辑不严谨(L30, L39-41)
5. 无用的重复代码(L42)
6. 不检查 sscanf 结果是否正确
7. 文件未关闭(L27)

这段代码来源于一个经过一定程度的传播的 github 仓库。我的一个朋友由于使用了这段代码,导致程序产生 bug 。这件事告诉我们不要随便复制粘贴看起来可靠的代码。

附频道主认为的优秀的 proc maps 解析程序的 C++ 实现,供参考:https://github.com/LSPosed/LSPlt/blob/a674793be6bc060b6d695c0cb481e8262c763885/lsplt/src/main/jni/lsplt.cc#L245

2024.05.23 改进了部分措辞
DisableSecureFlagDetector-v1.0.1.apk
63.2 KB
检查你的系统中窗口的 FLAG_SECURE 功能是否正常(即,限制截屏录屏的功能是否正常)

一般来说开了类似「禁用 FLAG_SECURE」的功能才会异常,如果实际情况与该 app 汇报的情况不符,请留言

Check whether the FLAG_SECURE function of the window in your system is normal (that is, whether the function of restricting screenshots and recording is normal)

Generally, the abnormality will only occur if you enabled something that "disable FLAG_SECURE". If the actual situation is different from what the app reports, please leave a comment
5ec1cff
DisableSecureFlagDetector-v1.0.1.apk
DisableFlagSecureDetector-v1.0.2-1.apk
63.4 KB
更新:处理一些常见的特殊情况

从该版本开始,如果没做任何修改应该不能用系统截屏截出显示「正常」的图
5ec1cff
DisableFlagSecureDetector-v1.0.2-1.apk
https://github.com/5ec1cff/DisableFlagSecureDetector

想了想还是开源了,实际上没什么技术含量。

不知道有没有人有兴趣改进 DisableFlagSecure ?
DisableFlagSecureDetector-v1.0.3-2.apk
67.6 KB
增加了一个检测方法,Android 12 或 12 以上的版本可用
现在背景会输出检测的细节,你可以查看或点击复制
5ec1cff
DisableFlagSecureDetector-v1.0.3-2.apk
注意:FLAG_SECURE 不能发挥作用才叫「异常」,也就是说你能对该 app 用常规手段截图才是异常
5ec1cff
DisableFlagSecureDetector-v1.0.3-2.apk
该检测方法对 DisableFlagSecure v4.0.0 (Android 12+) 不再有效。

原先的实现方式是阻止窗口的 flag secure 被提交给 surfaceflinger ,使得窗口的 layer 非 secure ,因此普通应用可以借助一些方法对自己的安全窗口进行「截图」以检测 flag secure 是否失效。

而该版本的实现方式改为允许截屏应用创建 secure display 或在截屏 API 中允许捕获 secure layer ,这样确保了只有真正具有截屏权限的应用才能绕过限制,并阻止上述检测。同时,这也解决了之前版本中 secure surface view 无法被截屏的问题(如 哔哩哔哩漫画特典 等)
2024/09/25 20:20:12
Back to Top
HTML Embed Code: