43 lines
3.4 KiB
Markdown
43 lines
3.4 KiB
Markdown
# 20260328 라이브룸 캡쳐/화면녹화 차단 점검
|
|
|
|
## 구현/점검 체크리스트
|
|
- [x] `LiveRoomActivity` 내 캡쳐/화면녹화 차단 적용 지점 확인
|
|
- [x] 전체 코드베이스에서 차단 해제/우회 가능 경로(`clearFlags`, `FLAG_SECURE` 재설정 등) 탐색
|
|
- [x] 화면녹화 감지 및 후속 처리(음소거/콜백 등록 해제) 로직 검증
|
|
- [x] 외부 레퍼런스(Android 공식 동작)와 현재 구현 정합성 검증
|
|
- [x] 점검 결과 및 근거(명령/파일/라인) 기록
|
|
|
|
## 검증 기록
|
|
- 2026-03-28
|
|
- 무엇: 라이브룸 캡처/화면녹화 차단 적용 여부를 코드베이스 전역과 외부 레퍼런스로 교차 점검했다.
|
|
- 왜: 사용자 질문("현재 모든 사람이 캡쳐와 화면녹화가 불가능한지")에 대해 단일 파일 확인이 아닌 우회 경로/플랫폼 제약까지 포함한 근거를 확보해야 했기 때문이다.
|
|
- 어떻게:
|
|
- 병렬 탐색(내부): `explore` 에이전트 3건
|
|
- `bg_baa23d06` (LiveRoomActivity 보안 플로우 추적)
|
|
- `bg_c991f78f` (우회/해제 경로 탐색)
|
|
- `bg_a5c8b08e` (대체 라이브 진입 화면 탐색)
|
|
- 병렬 탐색(외부): `librarian` 에이전트 2건
|
|
- `bg_b2336b84` (Android 공식 동작/제약)
|
|
- `bg_320d7f9b` (OSS 구현 패턴 비교)
|
|
- 직접 검색/정적 검증 명령:
|
|
- `grep "FLAG_SECURE|registerScreenRecordingCallback|addScreenRecordingCallback|removeScreenRecordingCallback"` (저장소 전역)
|
|
- `ast_grep_search`/`sg run`으로 `window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)` 및 `window.clearFlags(...)` 존재 여부 확인
|
|
- `grep "clearFlags\(|setFlags\("` (app/src/main/java 전역)
|
|
- `read`로 `LiveRoomActivity.kt` 라이프사이클/콜백/mute 처리 라인 직접 확인
|
|
- SDK 레퍼런스 확인: `/Users/klaus/Library/Android/sdk/platforms/android-35/data/api-versions.xml`
|
|
- 결과(핵심 근거):
|
|
- `LiveRoomActivity.kt:390`에서 `window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)`가 무조건 적용된다.
|
|
- 앱 코드에서 `window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)`는 발견되지 않았다(`sg run`/`ast_grep_search`/`grep` 교차 검증).
|
|
- 녹화 감지/후처리 로직:
|
|
- 등록: `LiveRoomActivity.kt:1627` (`windowManager.addScreenRecordingCallback`)
|
|
- 해제: `LiveRoomActivity.kt:1654` (`windowManager.removeScreenRecordingCallback`)
|
|
- 상태 반영: `LiveRoomActivity.kt:1659-1693` (`isScreenRecordingActive` -> `isCapturePrivacyMuted` -> `applyEffectiveAudioMuteState`)
|
|
- API 레벨 근거:
|
|
- `addScreenRecordingCallback`/`removeScreenRecordingCallback`/`SCREEN_RECORDING_STATE_VISIBLE`는 API 35부터(`api-versions.xml:70441,70451,70475`).
|
|
- `FLAG_SECURE`는 Android 플랫폼 상수로 존재(`api-versions.xml:70558`).
|
|
- 권한 근거:
|
|
- `AndroidManifest.xml:19`에 `<uses-permission android:name="android.permission.DETECT_SCREEN_RECORDING" />` 선언이 존재한다.
|
|
- 결론:
|
|
- **LiveRoomActivity 화면에 입장한 사용자 기준으로는 캡처/녹화 노출이 차단되도록 구현되어 있다(FLAG_SECURE 적용 + 해제 경로 부재).**
|
|
- 다만 Android 공식 문서 범위상 `FLAG_SECURE`는 기본적으로 스크린샷/비보안 디스플레이 노출 차단을 보장하며, 모든 녹화 시나리오 100% 차단을 플랫폼이 절대 보장한다고 단정할 수는 없다.
|