
NTDLL 언후킹과 hellsgate 게이트 변형을 혼합한 기법
원할 때마다 후킹되지 않은 ntdll.dll과 후킹된 ntdll.dll 사이를 전환할 수 있게 해주는 유저랜드 EDR 우회 기법입니다. 이것을 어떻게 만들었는지는 여기에서 확인할 수 있습니다.
.h 파일과 .c 파일을 프로젝트에 드래그 앤 드롭하기만 하면 됩니다. CRT 함수 중 직접 재구현하거나 원하는 방식으로 처리해야 하는 것들에 대한 헤더 파일 정의를 수정해야 합니다. 또한 프로젝트가 제대로 작동하려면 switch_memory_protection 함수를 직접 구현해야 하므로 .c 파일 내부의 이 함수도 수정해야 합니다.
다음은 이 라이브러리를 사용하는 방법에 대한 코드 조각입니다:
struct hook_cache *cache = 0;
cache = ntdll_reconstruction_init();
if (cache == 0)
// Throw Error!
while (1) {
// Do whatever
cache = ntdll_reconstruction_flip(cache); // Back to hooked stub
if (cache == 0)
// Throw Error!
Sleep(1234);
cache = ntdll_reconstruction_flip(cache); // Back to clean stub
if (cache == 0)
// Throw Error!
}