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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
NativeMirror — PE-sieve 기능의 네이티브 Delphi 구현으로, 재사용 가능한 라이브러리, CLI, 그리고 HollowsHunter 통합을 위한 PE-sieve 호환 DLL을 제공합니다. | Kitploit
도구/GitHubGitHub/habanada/nativemirror
Defensive ToolsMemory ForensicsReverse EngineeringMalware AnalysisDigital ForensicsBinary AnalysisIncident Response
GitHubhabanada/nativemirror

NativeMirror

PE-sieve 기능의 네이티브 Delphi 구현으로, 재사용 가능한 라이브러리, CLI, 그리고 HollowsHunter 통합을 위한 PE-sieve 호환 DLL을 제공합니다.

저장소 보기
5303일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

NativeMirror

NativeMirror는 hasherezade의 PE-sieve를 기반으로 각색한, PE-sieve 기능의 독립적인 Object Pascal 구현입니다. 프로세스 메모리를 스캔하고, 수정되거나 주입된 코드를 탐지하며, PE 파일을 덤프합니다.

이 구현은 Delphi 네이티브 API와 PE 엔진으로서 NativePe를 사용합니다. Delphi 라이브러리로 직접 사용하거나, CLI를 통해, 또는 PE-sieve 호환 DLL 인터페이스를 통해 사용할 수 있습니다. 세 가지 모두 동일한 스캐너 코어를 공유합니다. 호환성 목표는 PE-sieve 0.4.1.5의 외부에서 관찰 가능한 동작이며, 완전한 동작 동등성은 입증되지 않았습니다.

요구 사항

  • Windows 및 Delphi 12, Win32 및 Win64 컴파일러 지원 포함.
  • NativePe: 필수 PE 라이브러리. NativeMirror 옆에 ../NativePe로 배치하거나 Delphi 검색 경로를 조정하십시오.
  • NativeASM: 선택적 Win64 디스어셈블리 백엔드. NativeMirrorScan.NativeAsm.dproj 프로젝트는 USE_NATIVEASM을 활성화합니다. 이것이 없으면 NativeMirror는 Delphi/LDE 폴백을 사용합니다. NativeASM 검색 경로를 설치 환경에 맞게 조정하십시오.
  • Windows py 런처가 포함된 Python 3: DLL 빌드 후 단계와 Python 테스트에 필요합니다. 스크립트는 Python 표준 라이브러리를 사용합니다.
  • DUnitX: Delphi 테스트 러너를 빌드하는 데 필요합니다. 해당 유닛을 Delphi 검색 경로에서 사용할 수 있도록 하십시오.
  • CMake 및 C++ 도구가 포함된 Visual Studio 2022: DLL 계약 테스트에만 필요합니다.

일부 프로젝트 구성에는 로컬 종속성 경로가 포함되어 있습니다. 다른 머신에서 빌드하기 전에 검색 경로를 확인하십시오.

빌드

Delphi에서 NativeMirror.groupproj를 열고 필요한 프로젝트, 플랫폼 및 구성을 선택하십시오.

프로젝트출력
tools/NativeMirrorScan/NativeMirrorScan.dprojNativeMirrorScan.exe
tools/NativeMirrorDll/pe-sieve.dprojpe-sieve.dll
tests/ScannerIntegration/NativeMirrorTestTarget.dprojWin64 테스트 대상
tests/ScannerIntegration/NativeMirrorTestTarget32.dprojWin32 테스트 대상
tests/ScannerIntegration/NativeMirrorScannerTests.dprojWin64 스캐너 테스트 러너
tests/HollowsHunterIntegration/NativeMirrorHollowsHunterTests.dprojWin64 HollowsHunter 테스트 러너

필요에 따라 CLI와 DLL을 Win32 및 Win64용으로 빌드하십시오. 통합 테스트를 실행하기 전에 두 테스트 대상을 모두 빌드하십시오. 테스트 러너는 Win64용으로 빌드하십시오.

출력은 bin/<Platform>/<Config>에 저장됩니다. 아래 예제는 Debug를 사용합니다. 컴파일러 유닛은 dcu/에 저장됩니다. 실행 파일은 tools/에 두지 마십시오.

스캐너 실행

프로젝트 루트에서 다음 명령을 실행하십시오. 1234를 스캔할 프로세스 ID로 바꾸십시오.

.\bin\Win64\Debug\NativeMirrorScan.exe /help
.\bin\Win64\Debug\NativeMirrorScan.exe /pid 1234
.\bin\Win64\Debug\NativeMirrorScan.exe /pid 1234 /json /quiet /ofilter 2
.\bin\Win64\Debug\NativeMirrorScan.exe /pid 1234 /dir output

/ofilter 2는 덤프 출력을 비활성화합니다. /dir output은 보고서와 덤프의 출력 디렉터리를 선택합니다. 필요할 때 bin/Win32/Debug 아래의 Win32 실행 파일을 사용하십시오. 대상 프로세스에 대한 접근은 Windows 권한에 따라 달라집니다.

Delphi에서 직접 사용하기

src/와 그 유닛 하위 디렉터리들을 NativePe와 함께 프로젝트의 검색 경로에 추가하십시오. TNativeMirrorOptions와 함께 ScanAndDump를 호출하십시오. 이 라이브러리는 애플리케이션에 컴파일되며, 이 사용 방식에는 NativeMirrorScan.exe나 pe-sieve.dll이 필요하지 않습니다. Python은 별도의 DLL 빌드와 Python 테스트에만 필요합니다.

다음 콘솔 예제는 PID 1234를 스캔하고 보고서를 JSON으로 출력합니다:

program ScanExample;

{$APPTYPE CONSOLE}

uses
  System.JSON,
  NativeMirror.Core.Types,
  NativeMirror.Core.Options,
  NativeMirror.Core.Engine;

var
  Options: TNativeMirrorOptions;
  Report: TNativeMirrorReportEx;
  Json: TJSONObject;
begin
  Options := TNativeMirrorOptions.Default;
  Options.Pid := 1234;
  Options.Quiet := True;
  Options.OutputFilter := nmOutNoDir;
  Report := ScanAndDump(Options);
  try
    Json := Report.ToJson(Options.ResultsFilter, Options.JsonLevel);
    try
      Writeln(Json.ToJSON);
    finally
      Json.Free;
    end;
  finally
    Report.Free;
  end;
end.

PID를 대상으로 바꾸세요. nmOutNoDir는 보고서 파일과 덤프를 비활성화합니다. 스캔 오류는 Report.ErrorReport에서, 스캔 결과는 Report.ScanReport에서 확인하세요. 반환된 보고서의 소유권은 호출자에게 있으며, 호출자가 직접 해제해야 합니다.

bin 내 파일

PE-sieve 릴리스에서 pe-sieve32.exe와 pe-sieve64.exe를 다운로드하세요. 기존 비교 스크립트는 v0.4.1.1 실행 파일을 사용합니다. 두 파일을 모두 bin/Win64/Debug에 배치하세요. Win64 테스트 스크립트는 해당 위치에서 참조 스캐너를 찾습니다. 32 실행 파일은 Win64 테스트 도구와 함께 저장되어 있지만, 원래의 Win32 참조 구현입니다.

Debug 설정은 다음과 같습니다:

bin/
  Win64/Debug/
    NativeMirrorScan.exe
    pe-sieve.dll
    pe-sieve.dll.exports.json
    pe-sieve32.exe
    pe-sieve64.exe
    NativeMirrorTestTarget.exe
    NativeMirrorScannerTests.exe
    NativeMirrorHollowsHunterTests.exe
    hollows_hunter.exe
  Win32/Debug/
    NativeMirrorScan.exe
    pe-sieve.dll
    pe-sieve.dll.exports.json
    NativeMirrorTestTarget32.exe

NativeMirror는 CLI, DLL, export 레코드, 타깃, 테스트 러너를 생성합니다. PE-sieve와 HollowsHunter 실행 파일은 별도로 다운로드합니다. HollowsHunter는 통합 테스트나 수동 DLL 사용 시에만 필요합니다.

HollowsHunter: DLL 빌드 사용

HollowsHunter 릴리스에서 hollows_hunter64_dll.zip, v0.4.1.1을 다운로드하십시오. DLL 패키지를 사용하십시오. 호스트 아키텍처와 API 계약이 일치하면 NativeMirror가 최종 빌드한 pe-sieve.dll이 HollowsHunter가 사용하는 원본 PE-sieve DLL을 대체합니다. 독립 실행형 정적 실행 파일은 대체 DLL을 사용할 수 없습니다. 제공된 통합 테스트는 v0.4.1.1 Win64 DLL 호스트를 다룹니다.

수동으로 실행하려면 패키지의 hollows_hunter.exe를 NativeMirror로 빌드한 pe-sieve.dll 옆인 bin/Win64/Debug에 복사하십시오. 패키지의 원본 DLL을 NativeMirror DLL 위에 복사하지 마십시오. 호스트와 DLL 모두 Win64여야 합니다.

.\bin\Win64\Debug\hollows_hunter.exe /pid 1234 /quiet /hooks /ofilter 2 /json /report 7

자동 비교를 위해, 동일한 패키지에서 변경되지 않은 원본 EXE와 DLL을 다음 위치로 추출하십시오:

tests/HollowsHunterIntegration/fixtures/Win64/pe-sieve-C/
  hollows_hunter.exe
  pe-sieve.dll
  manifest.json

기존 manifest.json을 유지합니다. 이 파일은 예상 버전과 SHA-256 해시를 기록합니다. 러너는 이 파일들을 확인하고, 동일한 호스트를 별도의 reference 및 NativeMirror 디렉터리에 복사하며, 각 DLL을 통제된 테스트 프로세스에 대해 테스트합니다. 파일을 다운로드하거나 bin의 빌드를 덮어쓰지 않습니다.

DLL 빌드가 Python을 사용하는 이유

PE-sieve는 PESieve_version을 32비트 데이터 값으로 내보냅니다. 버전 0.4.1.5의 경우 해당 값은 0x00040105입니다. 호출자는 내보내기 주소가 숫자를 반환하는 함수가 아니라 이 4바이트를 가리킬 것으로 기대합니다.

이 프로젝트에서 사용하는 Delphi 12 컴파일러/링커는 exports 절을 통해 변수를 직접 내보내지 않습니다. 따라서 DLL에는 표시된 버전 값이 포함되며, 처음에는 요구되는 이름으로 헬퍼 함수를 내보냅니다.

링크 후, 프로젝트의 빌드 후 이벤트가 다음을 실행합니다:

py tools/NativeMirrorDll/finalize_exports.py bin/Win64/Debug/pe-sieve.dll

스크립트는 PESieve_version 내보내기 항목을 저장된 숫자를 가리키도록 설정하고 PE 체크섬을 업데이트합니다. 스캐너 코드와 기타 내보내기 대상은 변경하지 않습니다. 이 단계는 pe-sieve.dproj를 빌드할 때 자동으로 실행되며, 스크립트가 실패하면 빌드도 실패합니다.

스크립트는 또한 백업으로 pe-sieve.dll.before-version-export를 생성하고, 최종 내보내기 정보와 DLL 해시를 담은 pe-sieve.dll.exports.json을 생성합니다. 테스트 러너를 위해 JSON 파일을 보관하십시오. 일반 DLL 클라이언트에는 완성된 DLL만 필요합니다. Python은 빌드/테스트 머신에서 필요하며, 완성된 DLL을 사용할 때는 필요하지 않습니다.

테스트

필요한 프로젝트를 빌드하고 위의 참조 파일을 설치한 후 프로젝트 루트에서 명령을 실행하십시오.

.\bin\Win64\Debug\NativeMirrorScannerTests.exe
.\bin\Win64\Debug\NativeMirrorHollowsHunterTests.exe
py tests/CLIOutput/test_source_contract.py
py tests/CLIOutput/test_cli_arguments.py
py tests/ParityAudit/run_module_cases.py

스캐너 러너는 bin/Win64/<Config>에서 자신과 함께 있는 CLI와 pe-sieve64.exe를 찾습니다. Python 비교 스크립트는 기본적으로 bin/Win64/Debug를 사용합니다. 지원되는 경우 명시적 재정의가 가능합니다:

$env:NATIVEMIRROR_SCAN_EXE = "$PWD\bin\Win64\Debug\NativeMirrorScan.exe"
$env:PESIEVE_EXE = "$PWD\bin\Win64\Debug\pe-sieve64.exe"
$env:NATIVEMIRROR_TARGET32_EXE = "$PWD\bin\Win32\Debug\NativeMirrorTestTarget32.exe"

소스 계약 테스트는 pe-sieve-master/pe-sieve-master에 고정된 PE-sieve 0.4.1.5 소스 트리를 필요로 합니다. C++ DLL 테스트는 include/에 있는 원본 헤더를 사용합니다. 이 참조 소스는 공개된 프로젝트에 포함되어 있지 않습니다.

C++ DLL 계약 테스트를 빌드하고 실행하려면:

cmake -S tests/PeSieveDll -B parity-work/dll-contract-build-x64 -G "Visual Studio 17 2022" -A x64
cmake --build parity-work/dll-contract-build-x64 --config Debug
cmake -S tests/PeSieveDll -B parity-work/dll-contract-build-x86 -G "Visual Studio 17 2022" -A Win32
cmake --build parity-work/dll-contract-build-x86 --config Debug
py -m unittest discover -s tests/PeSieveDll -p test_version_export.py -v
py tests/PeSieveDll/run_contract.py --arch both

마지막 명령에는 완성된 Win32 및 Win64 NativeMirror DLL, 두 CLI 빌드, 그리고 두 테스트 대상이 필요합니다. 테스트 산출물은 parity-work/ 아래에 기록되며, 스캐너 진단은 스캐너 테스트 러너 옆에 기록됩니다.

다운로드한 참조 바이너리는 0.4.1.1입니다. 이들에 대한 비교는 해당 테스트 케이스를 다루며, 0.4.1.5 소스 참조와의 완전한 호환성을 입증하지는 않습니다.

소스 레이아웃

도구 다운로드