# 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 |