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

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ReflectiveDLLInjection — 반사적 DLL 주입은 반사적 프로그래밍 개념을 활용하여 호스트 프로세스의 메모리에서 라이브러리를 로드하는 라이브러리 주입 기법입니다. | Kitploit
도구/GitHubGitHub/stephenfewer/reflectivedllinjection
Memory ForensicsExploitationPost-ExploitationRed TeamingPayload Development
GitHubstephenfewer/reflectivedllinjection

ReflectiveDLLInjection

반사적 DLL 주입은 반사적 프로그래밍 개념을 활용하여 호스트 프로세스의 메모리에서 라이브러리를 로드하는 라이브러리 주입 기법입니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
3.4k817414년 전Kitploit 검토 완료

개요

Reflective DLL 인젝션은 반사적 프로그래밍(reflective programming) 개념을 활용하여 호스트 프로세스의 메모리에서 라이브러리 로딩을 수행하는 라이브러리 인젝션 기법입니다. 즉, 라이브러리가 최소한의 PE(Portable Executable) 파일 로더를 구현하여 스스로를 로딩하는 역할을 담당합니다. 이를 통해 호스트 시스템 및 프로세스와의 최소한의 상호작용만으로 로딩 방식과 호스트와의 상호작용 방식을 제어할 수 있습니다.

이 인젝션은 해당 아키텍처가 지원되는 Windows NT4부터 Windows 8까지, x86, x64 및 ARM에서 동작합니다.

개요

프로세스에 라이브러리를 원격으로 인젝션하는 과정은 두 단계로 이루어집니다. 첫째, 인젝션하려는 라이브러리를 대상 프로세스(이하 호스트 프로세스)의 주소 공간에 기록해야 합니다. 둘째, 라이브러리가 임포트 해석이나 메모리의 적절한 위치로의 재배치와 같은 런타임 요구 사항을 충족하는 방식으로 해당 라이브러리를 호스트 프로세스에 로드해야 합니다.

호스트 프로세스에서 코드 실행 권한을 확보했고 인젝션하려는 라이브러리가 호스트 프로세스 메모리의 임의 위치에 기록되었다고 가정할 때, Reflective DLL 인젝션은 다음과 같이 동작합니다.

  • 실행은 CreateRemoteThread() 또는 소형 부트스트랩 셸코드를 통해 라이브러리의 내보내기 테이블에 있는 내보내기 함수인 ReflectiveLoader 함수로 전달됩니다.
  • 라이브러리의 이미지가 현재 메모리의 임의 위치에 존재하므로 ReflectiveLoader는 먼저 자체 이미지의 현재 메모리 위치를 계산하여 이후 사용을 위해 자체 헤더를 파싱할 수 있도록 합니다.
  • 그런 다음 ReflectiveLoader는 호스트 프로세스의 kernel32.dll 내보내기 테이블을 파싱하여 로더에 필요한 세 가지 함수, 즉 LoadLibraryA, GetProcAddress 및 VirtualAlloc의 주소를 계산합니다.
  • 이제 ReflectiveLoader는 자체 이미지를 로드할 연속적인 메모리 영역을 할당합니다. 로더가 이후에 이미지를 올바르게 재배치하므로 위치는 중요하지 않습니다.
  • 라이브러리의 헤더와 섹션은 메모리의 새 위치에 로드됩니다.
  • 그런 다음 ReflectiveLoader는 새로 로드된 자체 이미지의 임포트 테이블 사본을 처리하여 추가 라이브러리를 로드하고 각각의 임포트된 함수 주소를 해석합니다.
  • 그런 다음 ReflectiveLoader는 새로 로드된 자체 이미지의 재배치 테이블 사본을 처리합니다.
  • 그런 다음 ReflectiveLoader는 새로 로드된 이미지의 진입점 함수인 DllMain을 DLL_PROCESS_ATTACH로 호출합니다. 이제 라이브러리가 메모리에 성공적으로 로드되었습니다.
  • 마지막으로 ReflectiveLoader는 이를 호출한 초기 부트스트랩 셸코드로 실행을 반환하거나, CreateRemoteThread를 통해 호출된 경우 스레드가 종료됩니다.

빌드

Visual Studio C++에서 'rdi.sln' 파일을 열고 Release 모드로 솔루션을 빌드하여 inject.exe와 reflective_dll.dll을 생성합니다.

사용법

테스트하려면 inject.exe를 사용하여 프로세스 ID를 통해 reflective_dll.dll을 호스트 프로세스에 인젝션합니다. 예:

inject.exe 1234

라이선스

3-clause BSD 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE.txt를 참조하십시오.

도구 다운로드