d3ro-voice/docs/re-findings/native-dll-patterns.md
Yun Chan e24bb8378c 초기 프로젝트 설정: 하네스 시스템 + 설계서 + RE 노하우
- CLAUDE.md: 프로젝트 규칙, 기술 스택, 코딩 규칙, 페이즈 로드맵
- .claude/settings.json: 권한, 강제 훅 (매 프롬프트 설계서 규칙 주입)
- .claude/skills/: implement-phase, review-phase, scaffold, test-commit, debug
- .claude/agents/: electron-architect, voice-pipeline-expert, ui-specialist
- docs/design/00-09: 마스터 아키텍처, 서비스 명세(16개), IPC(113채널),
  DB스키마, UI컴포넌트, 검증리포트, 외부엔진연동, 갭분석,
  VoiceMode패턴, 디자인시스템, 히스토리팝업
- docs/phases/1-7+3.5: 전체 구현 페이즈 문서
- docs/re-findings/: Speakly RE 노하우 5개 문서
2026-04-05 01:03:03 +09:00

40 lines
1.9 KiB
Markdown

# NativeHelper.dll 디컴파일 결과 핵심
## Ghidra 분석: 2,692개 함수, 196,683줄 디컴파일 C코드
전체 결과: C:/tmp/ghidra_decompile_output/_all_decompiled.c
## 37개 Action 디스패치 테이블
ping, insertText, getCursorState, clipboardPaste, getActiveApp,
isAppRunning, activateApp, getClipboardText, setClipboardText, clearClipboard,
captureScreenshot, startKeyMonitoring, stopKeyMonitoring, startAppMonitoring,
stopAppMonitoring, setKeyRecordingMode, setFnKeySuppression, startEditMonitor,
stopEditMonitor, updateHotkeys, simulateKeyPress, simulateKeys,
muteSystemAudio, unmuteSystemAudio, isSystemAudioMuted,
showNotification, removeNotification, initializeNotifications, getNotificationPermission,
checkAccessibilityPermission, requestAccessibilityPermission, enableSelfAccessibility,
checkMicrophonePermission, requestMicrophonePermission,
getMicrophoneDevices, startMicrophoneCapture, stopMicrophoneCapture,
setTextOperationConfig, exploreAccessibilityTree
## 키보드 후킹 (D3RO-VOICE에서 uiohook-napi로 대체)
- WH_KEYBOARD_LL 전역 후크
- LLKHF_INJECTED 플래그로 자체 이벤트 바이패스
- Win키 핫키 시 합성 keyup 주입 (시작 메뉴 방지)
- 8초 stale key 정리
## WASAPI 캡처 (D3RO-VOICE에서 Web Audio API로 대체)
- 이벤트 구동: WaitForMultipleObjects(captureEvent, exitEvent)
- 리샘플링: 디바이스 포맷 → 24kHz mono
- XAudioProcessor: Opus 인코딩 (로컬 앱에서는 불필요)
## 대체 매핑
| Speakly (NativeHelper.dll) | D3RO-VOICE (npm 패키지) |
|---------------------------|------------------------|
| WASAPI 마이크 캡처 | Web Audio API / node-record-lpcm16 |
| Opus 인코딩 | 불필요 (PCM 직접 전달) |
| WH_KEYBOARD_LL | uiohook-napi |
| SendInput (Ctrl+V) | @nut-tree/nut-js |
| Win32 Clipboard API | electron clipboard API |
| UI Automation | 초기 미구현, 추후 추가 |
| IAudioEndpointVolume | loudness npm |
| Toast Notification | electron Notification API |