본문 바로가기

잡코딩_hooking(후킹)

Anti Dll Injection?

LdrLoadDll 함수 주소의 기계어를 변형하여 LdrLoadDll 함수를 실행하지 못하도록 하게 유도


CreateRemoteThread를 이용한 방식은

대상 프로세스에 LoadLibrary를 하는 쓰레드를 실행하는 방식인데

LoadLibrary에서 사용하는 LdrLoadDll을 못쓰게 함으로써 

DllInject을 방어한다



/*

참고 및 출처 : [http://www.rohitab.com/discuss/topic/29440-anti-dll-injection/]

Anti Dll Injection

*/

#include <Windows.h>

#include <stdio.h>


int Anti_Dll_Injection();


int main(void)

{

Anti_Dll_Injection();

}


int Anti_Dll_Injection()

{

HANDLE hProc = NULL;

char pRet[] = { 0x3C };

HINSTANCE hLib = NULL;

void *pAddr = NULL;

BOOL state = 0;

DWORD dwResult = 0;


hProc = GetCurrentProcess();

hLib = LoadLibrary("NTDLL.DLL");

if (hLib == NULL)

{

printf("LoadLibrary Error\n");

return -1;

}

pAddr = GetProcAddress(hLib, "LdrLoadDll");

if (pAddr == NULL)

{

printf("GetProcAddress Error\n");

return -1;

}


state = WriteProcessMemory(hProc, pAddr, pRet, sizeof(pRet), &dwResult);

if (state == FALSE)

{

printf("WriteProcessMemory Error\n");

return -1;

}


FreeLibrary(hLib);

return 0;

}