초기 프로젝트 설정: 하네스 시스템 + 설계서 + 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개 문서
This commit is contained in:
commit
e24bb8378c
35 changed files with 11452 additions and 0 deletions
40
docs/re-findings/native-dll-patterns.md
Normal file
40
docs/re-findings/native-dll-patterns.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# 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 |
|
||||
Loading…
Add table
Add a link
Reference in a new issue