Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
lithium-kernel — 사용자 모드 클라이언트가 있는 Windows 커널 모드 드라이버로, 게임 치팅을 위한 IOCTL 기반 물리 및 가상 메모리 읽기/쓰기, 페이지 테이블 워킹, 패턴 스캐닝, 입력 에뮬레이션을 제공합니다. | Kitploit
도구/GitHubGitHub/gmh5225/lithium-kernel
Memory ForensicsReverse EngineeringAnti-BotBinary Exploitation
GitHubgmh5225/lithium-kernel

lithium-kernel

사용자 모드 클라이언트가 있는 Windows 커널 모드 드라이버로, 게임 치팅을 위한 IOCTL 기반 물리 및 가상 메모리 읽기/쓰기, 페이지 테이블 워킹, 패턴 스캐닝, 입력 에뮬레이션을 제공합니다.

저장소 보기
122개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

██╗     ██╗████████╗██╗  ██╗██╗██╗   ██╗███╗   ███╗
██║     ██║╚══██╔══╝██║  ██║██║██║   ██║████╗ ████║
██║     ██║   ██║   ███████║██║██║   ██║██╔████╔██║
██║     ██║   ██║   ██╔══██║██║██║   ██║██║╚██╔╝██║
███████╗██║   ██║   ██║  ██║██║╚██████╔╝██║ ╚═╝ ██║
╚══════╝╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝ ╚═════╝ ╚═╝     ╚═╝

사용자 모드 클라이언트를 갖춘 Windows 커널 모드 드라이버 프레임워크

Language Platform Arch Mode

[!IMPORTANT]

전체 프로젝트 받기

솔루션 파일은 Discord 서버에서 이용할 수 있습니다.

전체 소스 코드 구매에 관심이 있으시면 Telegram 또는 Discord @tonythimself로 연락해 주세요.


개요

Lithium은 Windows 커널 모드 드라이버(lithium-kernel)와 사용자 모드 클라이언트(lithium-usermode)로 구성됩니다. 사용자 정의 IOCTL 인터페이스를 통해 통신하며, 저수준 메모리 조작, 페이지 테이블 워킹, 입력 장치 제어 프리미티브를 제공합니다.


기능

기능설명
물리 메모리 읽기/쓰기MmCopyMemory를 통한 물리 주소 직접 읽기/쓰기
가상 메모리 읽기/쓰기MmCopyVirtualMemory를 통한 프로세스 간 가상 메모리 접근
DTB 확인PFN 데이터베이스 열거를 통한 디렉터리 테이블 베이스 추출
페이지 테이블 워킹PML4/PDPT/PD/PT 계층 캐싱을 통한 선형 주소 변환
패턴 스캐닝프로세스 메모리 전반에 걸친 IDA 스타일 시그니처 스캐닝
메모리 할당대상 프로세스 컨텍스트에서의 ZwAllocateVirtualMemory
메모리 보호대상 프로세스 컨텍스트에서의 ZwProtectVirtualMemory
마우스 에뮬레이션MouClass 서비스 콜백 후킹을 통한 커널 수준 마우스 입력
스레드 숨기기ETHREAD 필드 스푸핑 (시작 주소, CID, 생성 시간 등)
NMI 콜백 비활성화디버거 회피를 위한 NMI 콜백 억제
풀 정리커널 풀 추적기에서 빅 풀 테이블 항목 제거

프로젝트 구조

lithium/
├── lithium-kernel/              # Kernel-mode driver (KMDF)
│   ├── entry.cpp                # DriverEntry entry point
│   ├── core/
│   │   ├── dispatch/            # IOCTL dispatch and request routing
│   │   ├── requests/
│   │   │   ├── directory-table-base/  # DTB resolution & page table walk
│   │   │   ├── image-base/           # Process module base retrieval
│   │   │   ├── mouse/                # Mouse input emulation via MouClass
│   │   │   ├── read-write/           # Physical and virtual memory R/W
│   │   │   └── virtual-memory/       # Allocate, protect, query, pattern scan
│   │   └── utilities/
│   │       ├── kernel/          # Module enumeration, NMI, thread ops
│   │       └── ...              # Pool cleaner, CRT shim
│   └── dependencies/
│       ├── additional/
│       │   ├── crt/             # Minimal CRT implementation
│       │   ├── security/        # skCrypter string encryption, oxorany
│       │   └── structures/      # Shared invoke data structures
│       └── includes.hpp         # Master include header
│
└── lithium-usermode/            # User-mode client
    ├── entry.cpp                # Client entry point
    ├── core/
    │   └── driver/              # IOCTL communication layer
    └── dependencies/
        ├── additional/
        │   └── structs.hpp      # Page table entry unions & helpers
        └── includes.hpp

IOCTL 인터페이스

통신은 기존 드라이버(ProcObsrvesx.sys)의 IOCTL 디스패치 루틴을 후킹하여 설정됩니다. 로드 시 커널 모듈은 대상 드라이버를 찾아 IRP 디스패치 핸들러를 스캔한 뒤, lithium 자체의 hooked_ioctl로 향하는 트램폴린으로 덮어씁니다. 사용자 모드 클라이언트는 \\.\ProcObsrvesx를 열고, 모든 IOCTL은 후킹을 통해 투명하게 리디렉션됩니다.

코드입력 구조체동작
invoke_basebase_invoke { pid, handle }프로세스 이미지 베이스 조회
invoke_dtbdtb_invoke { pid, dtb }디렉터리 테이블 베이스 확인
invoke_readread_invoke { pid, directory_table, address, buffer, size }물리 메모리 읽기
invoke_writewrite_invoke { pid, directory_table, address, buffer, size }물리 메모리 쓰기
invoke_read_virtualread_virtual_invoke { pid, address, buffer, size }가상 메모리 읽기
invoke_write_virtualwrite_virtual_invoke { pid, address, buffer, size }가상 메모리 쓰기
invoke_allocateallocate_invoke { pid, type, protection, address, size }가상 메모리 할당
invoke_protectprotect_invoke { pid, protection, address, size }메모리 보호 변경
invoke_virtual_queryquery_virtual_invoke { pid, address, mbi }가상 메모리 정보 조회
invoke_pattern_scanpattern_invoke { pid, signature, address, pattern_address }메모리 패턴 스캔
invoke_move_mousemouse_invoke { x, y, flags, button_flags }마우스 입력 에뮬레이션

내부 동작

DTB 확인

드라이버는 MmGetPhysicalMemoryRanges가 반환한 물리 메모리 범위를 순회하고, PFN 데이터베이스를 워킹하여 자기 참조 PML4 엔트리를 찾은 뒤, 각 페이지 테이블 계층을 검증하여 주어진 프로세스에 대한 올바른 디렉터리 테이블 베이스를 확인합니다.

페이지 테이블 워킹

선형-물리 주소 변환은 4단계 x64 페이지 테이블 계층(PML4 → PDPT → PD → PT)을 계층별 캐싱과 함께 순회합니다. 대형 페이지(2MB / 1GB) 지원은 최선 노력 방식으로 포함됩니다.

마우스 에뮬레이션

드라이버는 MouClass 및 MouHID 드라이버 객체를 찾아 HID 장치 확장에서 MouseClassServiceCallback을 확인하고, MOUSE_INPUT_DATA 패킷을 콜백 체인에 직접 주입합니다.

스레드 숨기기

주요 ETHREAD 필드 — 생성 시간, 시작 주소, Win32 시작 주소, 커널 스택, CID, 종료 상태 — 가 저장되고 무해하거나 null 값으로 대체됩니다. 해제 시 원래 값은 스레드 종료 전에 복원됩니다.


요구 사항

  • Windows 10/11 x64
  • Windows Driver Kit (WDK) 10.0.26100.0이 설치된 Visual Studio 2022 이상
  • 커널 드라이버 로딩 방법 (테스트 서명, 커널 매퍼 등)

빌드

  1. Visual Studio에서 lithium.sln 열기
  2. 구성을 Release / x64로 설정
  3. lithium-kernel 빌드 → lithium-kernel.sys
  4. lithium-usermode 빌드 → lithium-usermode.exe

또는 MSBuild 사용:

msbuild lithium.sln /p:Configuration=Release /p:Platform=x64

사용법

#include <core/driver/driver.hpp>

g_driver->initialize_handle();
DWORD pid = g_driver->get_process_id(L"target.exe");
g_driver->attach(pid);

g_driver->image_base = g_driver->get_image_base(0);
g_driver->dtb = g_driver->resolve_directory_table_base();

auto value = g_driver->read<uintptr_t>(g_driver->image_base + 0xOFFSET);
g_driver->mouse_event(-10, -10, 0, 0);

의존성

  • skCrypter — 컴파일 타임 문자열 암호화
  • oxorany — 컴파일 타임 상수 난독화

면책 조항

이 프로젝트는 교육 및 연구 목적으로만 사용하도록 만들어졌습니다.
본인이 소유하거나 테스트에 대한 명시적 허가를 받은 시스템에서만 사용하십시오.
저자는 이 소프트웨어로 인해 발생하는 어떠한 오용이나 손해에 대해서도 책임지지 않습니다.


built for research · not for production
도구 다운로드