Skip to content
 
 

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📞 雚晎截屏

简䜓䞭文 | English

"悄然记圕尜收県底 — Silent Capture, Full Control"

基于特权 shellShizuku / Porter 双后端的 Android 截屏/圕屏 APP —— 䞍经 MediaProjection、无系统匹窗、无状态栏摄像倎指瀺前台 App 完党无感知被截屏/圕屏。支持快捷觊发䞎完党自定义的截屏/圕屏参数。

screencap/screenrecord (shell uid 2000, u:r:shell:s0)
        │  䞍觊发 MediaProjection 授权匹窗
        │  䞍觊发「犁止截屏」类提瀺FLAG_SECURE 内容仍䞺黑块
        │  䞍觊发「屏幕共享䞭」指瀺噚
        ▌
   RainyScreenShot 独享结果

RainyScreenShot雚晎截屏— Silent Screenshot & Screen Recorder · the Rainy Family tools.


✹ 功胜特性

特性 诎明
🀫 静默截屏 shell uid screencap 盎取 framebuffer前台 App 无任䜕回调䞎感知、无「犁止截屏」类提瀺实测圕屏期闎 dumpsys media_projection 始终䞺 null若窗口讟了 FLAG_SECURE其内容圚画面䞭䞺黑块——系统级内容保技任䜕方案均无法绕过
🎬 静默圕屏 shell uid screenrecordv1.4系统级猖码噚匀始/停止仅衚现䞺进皋 SIGINT无投屏䌚话泚册、无通知指瀺
⚡ 快捷觊发 䞉方匏APP 内按钮 · 悬浮控制球OverlayManager TYPE_APPLICATION_OVERLAY· 快捷磁莎TileService锁屏可甚。磁莎圚䞻页手劚添加䞀键静默加入任务栏无需进猖蟑暡匏点击自劚收起面板再截/圕䞍拍到面板
🛠 自定义参数 截屏PNG/RAW、指定 display-id、倚星瀺噚 -a。圕屏分蟚率 --size、码率 --bit-rate默讀 8M、时长 --time-limit0=䞍限、bugreport 时闎戳叠加、--display-id
🎯 区域截屏 阶段二对截取结果做像玠裁剪无需 root
⏺ 悬浮控制 圕屏时星瀺半透明小控制球点击即停可敎䜓隐藏仅靠磁莎/APP 停止
🌙 深色暡匏 å…šå±€ Material You 自适应
🔌 双后端支持 shell 通道由 Shizuku 或 PorterShizuku 的掻跃绎技 fork提䟛讟眮页可切换自劚 / Porter / Shizuku自劚暡匏䌘先 Porter切换后需区制停止并重新打匀生效
🔐 纯本地 零联眑、零权限䞊报MediaStore 私有路埄产出

🔍 隐身原理实测于 Android 16 / API 36

本机shizuku shell uid 2000u:r:shell:s0实测结论

检测绎床 MediaProjection 方案 本项目方案shell 盎调
系统授权匹窗 每次需确讀Android 14+ 默讀䞍可跳过 ✅ 无匹窗
MediaProjectionManager 䌚话泚册 有App 可通过 dumpsys media_projection / API 感知 ✅ 圕屏党皋实测䞺 null
状态栏「圕屏/投屏」囟标 有Android 14+ 䞍可隐藏 ✅ 无任䜕指瀺
前台 App 感知回调 无盎接 API䜆存圚闎接信号虚拟 Display 创建、麊克风焊点等 ✅ 无回调路埄
FLAG_SECURE 内容 星瀺䞺黑块 ⚠ 同䞺黑块系统级内容保技shell 路埄同样无法绕过差匂仅圚党皋无提瀺、目标 App 无感知

⚠ 蟹界劂实诎明本方案绕过的是「垞规可感知信号」。它䞍修改目标 App、䞍泚入任䜕代码劂目标 App 通过 dumpsys 系统级自检需 READ_LOGS/adb 权限普通 App 䞍具倇或对画面内容做数字氎印/暡糊检测任䜕圕屏方案郜无法保证䞍可检测FLAG_SECURE 窗口内容银行 App、DRM 视频等圚任䜕捕获路埄䞋均䞺黑块属系统级内容保技同样无法绕过。方案目标 = 「普通 App 的垞规检测手段党郚倱效」这圚实测䞭已成立。


🏗 技术架构

┌──────────────────────────────────────────────────┐
│                 Android App                       │
│                                                   │
│  ┌─────────────────────────────────────────────┐ │
│  │        Compose UI                            │ │
│  │  銖页(截屏/圕屏状态) · 历史记圕 · 讟眮       │ │
│  └────────────────────┬────────────────────────┘ │
│                       │                           │
│  ┌────────────────────▌─────────────────────────┐ │
│  │        RecordingSessionManager单䟋         │ │
│  │  start/stop · 状态机 · 时长统计 · 蟓出路埄     │ │
│  └────────────────────┬────────────────────────┘ │
│                       │                           │
│  ┌────────────────────▌─────────────────────────┐ │
│  │        ShellCapture栞心                    │ │
│  │  Shizuku shell 䌚话 · stdout 管道取垧          │ │
│  │  · SIGINT 停止圕制 · 蜮询/监听进皋退出         │ │
│  └────────────────────┬────────────────────────┘ │
│                       │                           │
│  ┌────────────────────▌─────────────────────────┐ │
│  │   觊发层App UI · OverlayManager 悬浮球       │ │
│  │           · TileService 快捷磁莎             │ │
│  └─────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘

关键技术决策

  1. shell 盎调而非 Shizuku Binder APIscreencap/screenrecord 䜍于 /system/binshell uid 具倇执行权实测通过。通过 Shizuku.newProcess() 建立持久 shell 䌚话SDK 由 Porter 兌容层提䟛rikka.shizuku.* API 保持兌容支持 Shizuku / Porter 双后端蟓出经 stdout 管道回䌠䞍萜公共目圕。
  2. 圕屏停止机制screenrecord 无 stop 参数靠向目标进皋发 SIGINT 完成容噚 moov box 定皿实测进皋 SIGINT → mp4 正垞关闭、可播攟。通过同䌚话 shell 持有 pidkill -INT <pid> 停止。
  3. 䌚话保掻Shizuku shell 进皋䞎 APP 进皋独立圕屏期闎 APP 被杀䞍圱响圕制停止靠悬浮球/磁莎/超时䞉重兜底。
  4. 无前台服务的静音讟计圕屏执行䜓圚 shell uid 䞭APP 自身䞍持前台服务、䞍星瀺任䜕通知Android 14+ 对 FGS 的区制通知因歀䞍适甚。

📁 项目结构

RainyScreenShot/
├── app/src/main/java/com/rainy/screenshot/
│   ├── capture/            # 栞心
│   │   ├── ShellExecutor.kt       # 特权 shellShizuku/Porter䌚话管理stdout/exitcode/pid
│   │   ├── ScreenshotEngine.kt    # screencap 封装PNG/RAW/display-id/-a
│   │   ├── RecordingEngine.kt     # screenrecord 封装SIGINT 停止/超时兜底
│   │   └── CaptureConfig.kt       # 截屏/圕屏参数暡型
│   ├── session/
│   │   └── RecordingSessionManager.kt  # 圕制䌚话状态机 + 时长统计
│   ├── trigger/
│   │   ├── ScreenshotTileService.kt  # 截屏快捷磁莎点击收面板再截
│   │   └── RecordTileService.kt      # 圕屏快捷磁莎启停前收面板
│   ├── overlay/
│   │   ├── FloatingBallService.kt    # 悬浮控制球OverlayManager
│   │   └── FloatingBallController.kt # 悬浮球匀关控制Shizuku 静默授权
│   ├── ui/
│   │   ├── home/          # 銖页状态卡 + 快捷截屏/圕屏 + 磁莎管理
│   │   ├── history/       # 结果浏览私有 MediaStore/应甚目圕
│   │   ├── preview/       # 囟片/视频预览FileProvider 分享
│   │   ├── settings/      # 参数自定义页
│   │   └── theme/         # 雚晎粉䞻题
│   └── data/
│       └── local/         # DataStore/SharedPreferences 持久化
├── gradle/libs.versions.toml
└── docs/
    └── TECH_NOTES.md      # 实测记圕園档呜什行䞺、退出码、蟹界

🌐 倚语蚀

内眮䞉语蚀简䜓䞭文默讀、繁體䞭文、English。跟随系统语蚀自劚切换Android 13+ 还可圚系统讟眮里按应甚单独指定语蚀 → 雚晎截屏。


🛠 构建

# 侎 RainyToken 盞同的 ARM64 Proot 兌容配眮
./gradlew assembleDebug
# APK 蟓出app/build/outputs/apk/debug/app-debug.apk

运行前提讟倇已激掻 Shizuku 或 PorterADB 或 Root 方匏并圚对应服务䞭授权本应甚。服务后端可圚讟眮页切换自劚 / Porter / Shizuku需区制停止并重新打匀生效。


🐱 关于

RainyScreenShot雚晎截屏是「雚晎系列」工具成员由 雚晎喵 匀发绎技

  • RainyLLM — 纯犻线 Android 本地 LLM 掚理服务噚
  • RainyScanner — 䞍拊截䞍跳蜬的 Android 扫码工具
  • Rainy2FA — 纯本地 · 零联眑 · 生物识别保技的 TOTP 验证噚
  • RainyToken — AI 䜙额䞎甚量查询 APP
  • RainyScreenShot — 静默截屏/圕屏工具本项目

静悄悄地来静悄悄地圕 📷


📄 License

MIT License © 2026 Rainy

About

📞 雚晎截屏 — Silent Screenshot & Screen Recorder via Shizuku shell · Rainy Family

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages