Lasiyan
Active

메이플스토리 필터키 프로그램

윈도우 환경에서 필터키를 적용하는 프로그램

Windows 환경에서 필터키(Filter Keys) 값을 프리셋으로 빠르게 전환/관리하는 도구입니다.

문의 사항은 댓글, 이메일 또는 베라서버 미테리로 문의 바랍니다.

개발 환경

  • Windows 10 Home 22H2 19045.3086
  • Windows 11 Pro 22H2 22621.1848
  • Visual Studio 2019 - 16.11.5

빠른 가이드

  1. 프로그램 실행
  2. 켜기 클릭
  3. 사용이 끝난 후 끄기 클릭

상세 가이드

프로그램에서 각 옵션에 마우스를 올리면 상세 설명이 출력됩니다.**

프리셋(필터키) 속성 수정 방법

  1. 수정할 프리셋을 클릭한다. 단, 끄기는 수정이 불가능하다.
  2. 수정하기 체크 박스를 선택 후 각종 속성 값을 원하는 값으로 변경한다.
  3. 수정이 끝나면 다시 저장하기 체크 박스를 선택 해제하면 값이 저장되고 프리셋이 적용된다.

세부 옵션 활성화

  • 끄기 프리셋을 선택한 후 Ctrl+Alt+F12를 누르면 디버깅 옵션 창이 출력됩니다.
  • 해당 UI에서 세부 설정, 테스트 관련 옵션, 배포 외 목적으로 개발된 기능을 확인할 수 있습니다.

언어 설정

  • 지원 언어: 한국어, English, 日本語
  • 최초 실행 시 시스템 언어를 자동으로 감지하여 적용합니다.
    • 지원하지 않는 시스템 언어인 경우 한국어로 설정됩니다.
  • 끄기 프리셋을 선택한 후 Ctrl+Alt+F12로 디버깅 옵션 창을 열고, 상단의 언어 선택 콤보박스에서 변경할 수 있습니다.
  • 언어를 변경하면 프로그램이 재시작되며, 이후 모든 UI가 선택한 언어로 표시됩니다.

프로그램 설정 초기화

  1. 윈도우 시작 시 자동 실행 옵션이 선택된 경우 해제합니다.
  2. 프로그램을 종료합니다.
  3. Win+R키를 누른 후 regedit을 입력하여 레지스트리 편집기를 실행합니다.
  4. HKEY_CURRENT_USER\Software경로에서 FilterKeyHelper 폴더를 삭제합니다.
  5. 프로그램을 다시 실행합니다.
전체화면 사용자인데 관리자 권한으로 해도 안된다면?

요약

  • 단축키를 사용하려면, 가능한 창모드 사용을 권장드립니다.
  • 전체화면에서 사용하려면 관리자 권한이 필요합니다.

관리자 권한 상시 활성화 방법

  1. 프로그램 우클릭 -> 속성(R)
  2. 호환성 탭으로 이동
  3. 관리자 권한으로 이 프로그램 실행 체크 후 확인

    여러 윈도우 계정을 사용하는 경우 모든 사용자에 대한 설정 변경에서 설정

설정해도 안되는데요?

해당 파트는 피드백이 더 쌓이면 업데이트 예정입니다

창모드 사용을 권장합니다

꼭 전체화면을 써야 겠다면, 다음 옵션을 활성화 하세요.

  1. 프로그램을 관리자 권한으로 실행
  2. 프로그램에서 끄기 버튼 클릭
  3. Ctrl+Alt+F12 입력
  4. 실험실 메뉴 중 전체화면 게임 안에서 단축키 기능 활성화 클릭

이 기능이 뭔가요?

요약: HotKey는 윈도우에서 판단해서 필요한 정보만 제한적으로 제공, RawInput은 전체 정보에서 내가 판단하여 필요한 정보만 수집

해당 기능이 활성화되면 단축키 사용 시, RegisterHotKey API 대신 RegisterRawInputDevices를 사용합니다.

RegisterHotKey미리 등록한 특정 조합에 대해서만 윈도우가 키 스트림을 판단하여 이벤트(입력 여부)를 프로그램에 전달합니다.

반면 RegisterRawInputDevices는 키보드에서 누르는 키 자체를 프로그램이 받을 수 있도록 등록하는 방식입니다.

전자의 경우 일반적으로 단축키를 사용하는 많은 프로그램들에서 사용되는 방식이며 윈도우 자체에서도 권장하는 방식입니다.

후자의 경우 역시 공식적인 API를 통해 구현되었고 특정 프로그램의 입력을 가로채는 후킹 방식과 거리는 멀지만, 일부 안티치트 프로그램 또는 보안 프로그램에서 해당 함수를 키로거 함수로 판단하고 기능을 제한할 수 있습니다.

메이플의 경우, 비-관리자 권한과 해당 옵션을 사용하면 기능이 동작하지 않으며, 이는 넥슨 보안프로그램이 비-관리자 프로그램에서 RegisterRawInputDevices 호출을 제한합니다.

이는 메이플스토리는 실행 시 관리자 권한으로 실행되며, 필터키 프로그램은 비-관리자 권한으로 실행될 경우 윈도우(OS)에서 키스트림을 읽는데 제한이 발생할 수 있습니다.

해킹 위험성은?

RawInputDevice 방식은 프로그램이 키 스트림을 수집하여 판단하기 때문에 해당 값을 모두 저장하여 사용자의 패스워드 또는 OTP 입력값 등을 수집할 수 있습니다. 그리고 수집된 정보를 네트워크 상에서 타인에게 전달할 수 있습니다.

따라서 작업 관리자프로세스 탭에서 프로그램이 타이핑 간 디스크(%) 또는 네트워크 사용(%) 수치가 증가하는지 확인하여야 합니다.

본 프로그램은 사용자 데이터를 저장하거나 외부 서버로 전송하지 않습니다


배포/검증 가이드

Get-FileHash .\FilterKeySetting.exe -Algorithm SHA256

출력 해시가 .sha256 파일의 값과 동일하면 무결성이 확인됩니다.

권한/게시자 안내

  • 기본 실행 권한: asInvoker
  • SmartScreen의 게시자 표시는 코드서명 인증서 기반입니다.
    • 서명되지 않은 빌드에서는 알 수 없는 게시자로 표시될 수 있습니다.
  • 앱 내부에서 관리자 권한으로 실행을 선택하면 UAC(사용자 계정 컨트롤) 확인 창이 표시될 수 있습니다.
  • 관리자 권한으로 실행된 경우 메인 창 제목 끝에 (관리자 모드)가 표시됩니다.
  • 마우스 및 키보드를 통한 백그라운드 제어 시, 일부 환경에서 관리자 권한이 필요할 수 있습니다.

주의 사항

  • 본 프로그램은 접근성(필터키) 시스템 설정을 직접 변경하므로, 보안 정책이 엄격한 환경에서는 일부 기능이 제한될 수 있습니다.
  • 전역 단축키/백그라운드 입력 감지/프로세스 감지 기능은 옵션을 켠 경우에만 동작합니다.
  • 자동 실행 옵션은 HKCU\...\Run 레지스트리에 현재 exe 경로를 등록합니다.
  • 배포 신뢰, SmartScreen, 설정 저장 범위, 운영 권한 관련 상세 내용은 아래 문서를 참고하세요.
  • 단축키는 타 프로그램과 중복 시 동작하지 않을 수 있습니다.

    예를들어 MapleStory에서 F1에 스킬을 올리고, 토글키를 F1로 설정하는 경우 스킬이 나가지 않을 수 있음

보안/운영 주의사항 상세보기

1) 시스템 설정 변경 관련

  • 본 프로그램은 Windows 필터키 설정을 적용하기 위해 SystemParametersInfo(SPI_SETFILTERKEYS)를 호출합니다.
  • 따라서 회사 보안 정책, 공용 PC 정책, 게임 보안 정책 등에서 시스템 설정 변경 행위를 제한하는 경우 기능 일부 또는 전체가 차단될 수 있습니다.

2) 전역 단축키 관련

  • 기본 단축키 기능은 Windows RegisterHotKey / UnregisterHotKey로 구현됩니다.
  • 전체화면 게임 안에서 단축키 기능 활성화 옵션을 켠 경우, 단축키 경로가 Raw Input (RegisterRawInputDevices + WM_INPUT)으로 전환됩니다.
  • 아래 옵션이 켜진 경우에만 단축키 등록을 시도합니다.
    • 단축키를 통한 프리셋 변경 기능 사용
    • 단축키를 통한 프리셋 토글 기능 활성화
  • 해당 옵션을 끄면 관련 단축키 등록/호출 루틴은 수행되지 않습니다.

3) 백그라운드 입력 감지 관련

  • 백그라운드에서 ESC 버튼이 입력되면 필터키 끄기 기능은 타이머 + GetAsyncKeyState(VK_ESCAPE) 기반으로 동작합니다.
  • 마우스 기반 OFF 기능(더블클릭/이동 감지)은 백그라운드 상태에서 마우스 입력 상태를 주기적으로 확인합니다.
  • 관련 옵션을 끄면 해당 감지 루틴은 비활성화됩니다.

4) 자동 실행 관련

  • 윈도우 시작 시 자동 실행 옵션은 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run에 현재 exe 경로를 등록합니다.
  • 옵션을 끄면 해당 레지스트리 값이 삭제됩니다.
  • exe 파일이 이동/삭제된 경우, Windows는 해당 항목을 무시하며 부팅이나 다른 작업에 영향을 주지 않습니다.

5) 프로세스 포커스 감지 관련

  • 특정 프로세스 전환 시 프리셋 끄기 옵션은 포그라운드 윈도우의 프로세스 이름을 주기적으로 확인합니다.
  • PROCESS_QUERY_LIMITED_INFORMATION 권한으로 QueryFullProcessImageName을 호출하며, 대상 프로세스의 메모리를 읽거나 조작하지 않습니다.
  • 관련 옵션을 끄면 해당 감지 루틴은 비활성화됩니다.

6) 게임/뱅킹/보안 제품 경고 가능성

  • 게임 보안(안티치트), 뱅킹 보안 모듈, EDR/백신 제품은 다음 항목을 민감하게 판단할 수 있습니다.
    • 전역 단축키 등록
    • 백그라운드 입력 상태 감지
    • 시스템 접근성 설정 변경
    • 자동 실행 레지스트리 등록
    • 외부 프로세스 이름 조회
  • 위 판단에 따라 경고 팝업, 기능 제한, 앱 종료가 발생할 수 있습니다.
  • 특히 독점 전체화면 + 보안 모듈 환경에서는 비관리자 권한에서 Raw Input 기반 단축키가 제한될 수 있습니다.
  • 이 경우 앱에서 관리자 권한 재실행을 안내할 수 있으며, 재실행 시 UAC 확인 창이 표시됩니다.

7) 배포 신뢰(서명/SmartScreen)

  • SmartScreen 및 일부 백신의 경고 여부는 코드 서명 여부, 배포 이력, 사용자 평판에 영향을 받습니다.
  • 코드 서명이 없는 빌드는 알 수 없는 게시자로 표시될 수 있습니다.

8) 설정 저장 범위

  • 설정은 HKEY_CURRENT_USER\Software\FilterKeyHelper에 저장됩니다.
  • 즉, 현재 로그인한 사용자 계정 기준으로만 적용되며, 다른 사용자 계정/다른 PC와 자동 동기화되지 않습니다.

9) 동기화 옵션 관련

  • 필터키를 설정할 때 제어판과 동기화 옵션을 켜면 시스템 변경 알림(SPIF_SENDCHANGE)을 추가로 전달합니다.
  • 환경에 따라 순간 입력 지연, UI 깜빡임 등 체감이 발생할 수 있습니다.

10) 권한 관련

  • 기본 실행 권한은 asInvoker이며, 관리자 권한 자동 상승을 요구하지 않습니다.
  • 다만 보안 정책 또는 시스템 정책에 따라 관리자 권한 실행이 필요할 수 있습니다.
  • 관리자 권한 실행 시 메인 창 제목에 (관리자 모드)가 표시됩니다.
  • 앱 내부 재실행(관리자 권한 요청 포함) 시 ShellExecute를 사용하며, 성공 시 기존 인스턴스를 종료합니다.
  • 단일 인스턴스 동작은 일반 실행 기준으로 유지되며, 앱 내부 재실행 경로는 재시작 인자를 통해 예외 처리됩니다.
  • 관리자 권한으로 실행된 인스턴스도 기존 인스턴스 활성화 메시지를 수신할 수 있도록 예외 처리하여, 중복 실행 시 기존 창을 전면으로 복원하도록 보완했습니다.

라이선스 / 저작권

  • 본 프로젝트의 저작권은 Lasiyan에게 있습니다.
  • 별도 서면 허가가 없는 경우, 본 소프트웨어의 사용/복제/수정/배포/재배포는 허용되지 않습니다.
  • 자세한 조건은 LICENSE 문서를 참고하세요.