Blackbone
Windows 메모리 해킹 라이브러리
특징
프로세스 상호작용
- PEB32/PEB64 관리
- WOW64 장벽을 통한 프로세스 관리
프로세스 메모리
- 가상 메모리 할당 및 해제
- 메모리 보호 변경
- 가상 메모리 읽기/쓰기
프로세스 모듈
- 로드된 모든 (32/64비트) 모듈 열거. 로더 목록/섹션 객체/PE 헤더 메서드를 사용하여 모듈 열거.
- 내보낸 함수 주소 가져오기
- 기본 모듈 가져오기
- 로더 목록에서 모듈 연결 해제
- 모듈 인젝션 및 이젝션 (순수 IL 이미지 포함)
- WOW64 프로세스에 64비트 모듈 인젝션
- 네이티브 PE 이미지 수동 매핑
스레드
- 스레드 열거
- 스레드 생성 및 종료. 세션 간 스레드 생성 지원.
- 스레드 종료 코드 가져오기
- 기본 스레드 가져오기
- TEB32/TEB64 관리
- 스레드 조인
- 스레드 일시 중단 및 재개
- 하드웨어 중단점 설정/제거
패턴 검색
원격 코드 실행
- 원격 프로세스에서 함수 실행
- 자체 코드를 어셈블하고 원격으로 실행
- cdecl/stdcall/thiscall/fastcall 규약 지원
- 값, 포인터 또는 참조로 전달되는 인수 지원 (구조체 포함)
- FPU 유형 지원
- 새 스레드 또는 기존 스레드에서 코드 실행
원격 후킹
- int3 또는 하드웨어 중단점을 사용하여 원격 프로세스에서 함수 후킹
- 반환 시 함수 후킹
수동 매핑 기능
- x86 및 x64 이미지 지원
- 보호되지 않은 임의 프로세스에 매핑
- 적절한 메모리 보호 플래그를 사용한 섹션 매핑
- 이미지 재배치 (2가지 유형만 지원. 다른 재배치 유형이 있는 PE 이미지는 본 적 없음)
- 임포트 및 지연 임포트 해결
- 바운드 임포트는 부수적으로 해결되는 것으로 생각됨
- 모듈 내보내기
- 전달된 내보내기 이미지 로딩
- API 스키마 이름 리디렉션
- SxS 리디렉션 및 격리
- 활성화 컨텍스트 지원
- 네이티브 로드 순서와 유사한 DLL 경로 해결
- TLS 콜백. 하나의 스레드에 대해서만 그리고 PROCESS_ATTACH/PROCESS_DETACH 이유에 대해서만.
- 정적 TLS
- 예외 처리 지원 (SEH 및 C++)
- 일부 네이티브 로더 구조에 모듈 추가 (기본 모듈 API 지원: GetModuleHandle, GetProcAddress 등)
- 보안 쿠키 초기화
- C++/CLI 이미지 지원
- 이미지 언로딩
- 수동 임포트 매핑의 경우 가져오기 라이브러리의 참조 카운터 증가
- 순환 종속성이 적절히 처리됨
드라이버 기능
- 사용자 메모리 할당/해제/보호
- 사용자 및 커널 메모리 읽기/쓰기
- WOW64 프로세스에 대한 영구 DEP 비활성화
- 프로세스 보호 플래그 변경
- 핸들 액세스 권한 변경
- 프로세스 메모리 다시 매핑
- 할당된 사용자 모드 메모리 숨기기
- 사용자 모드 DLL 인젝션 및 수동 매핑
- 드라이버 수동 매핑
요구 사항
- Visual Studio 2017 15.7 이상
- Windows SDK 10.0.17134 이상
- WDK 10.0.17134 이상 (드라이버 전용)
- VC++ 2017 Libs for Spectre (x86 및 x64)
- Spectre 완화 기능이 포함된 Visual C++ ATL (x86/x64)
라이선스
Blackbone은 MIT 라이선스에 따라 라이선스가 부여됩니다. 종속성은 각각의 라이선스를 따릅니다.
