1. 루팅 없는 원격 제어의 기술적 배경

과거의 안드로이드 원격 제어 앱들은 기기 루팅(Rooting)을 요구하거나 시스템 서명(System Signature)이 필요했습니다. 그러나 현대의 모바일 보안 환경에서는 보안 취약점 때문에 루팅이 엄격히 금지됩니다. KODARI는 구글 안드로이드의 공식 프레임워크인 MediaProjection API와 AccessibilityService(접근성 서비스)를 결합하여 100% 비루팅 방식으로 완벽한 원격 제어를 실현했습니다.

2. 화면 캡처 파이프라인: MediaProjection & VirtualDisplay

  1. 권한 획득: 사용자가 [화면 공유 허용] 다이얼로그를 승인하면 MediaProjection 토큰이 생성됩니다.
  2. 가상 디스플레이 생성: createVirtualDisplay()를 통해 모바일 화면 해상도에 맞춘 가상 렌더링 버퍼를 생성합니다.
  3. 하드웨어 인코딩 (MediaCodec): H.264 / AVC 또는 VP8/VP9 하드웨어 인코더를 사용하여 실시간으로 비디오 스트림을 고압축 패킷으로 변환합니다.

3. 원격 터치 및 키 주입: AccessibilityService

  • GestureDescription 활용: 웹 브라우저에서 마우스 클릭이나 드래그 이벤트가 발생하면, WebSocket을 통해 X, Y 좌표 및 지속 시간(Duration)이 모바일 에이전트로 전달됩니다.
  • dispatchGesture() 실행: 안드로이드 7.0(API 24) 이상에서 제공하는 dispatchGesture() API를 호출하여 사람의 손가락 터치와 완전히 동일한 정전식 제스처를 시뮬레이션합니다.