[프로세스 시작전에 DLL Injection을 하는 방법]
 
CreateProcess API를 suspend 상태로 실행시키면 메모리에 프로세스가 올라가지만
suspend 상태이기 때문에 메인스레드가 실행은 되지 않는다.
이때 프로세스에 DLL Injection을 해주고 완료가 되면 ResumeThread API를 통해 대기중인 메인스레드를 실행시킨다.
 
프로세스 대기 상태
suspend 상태에서 메모리를 보면 아무것도 없다.
위 코드를 보면 suspend상태에서 5초후 실행된다.
이때 notepad.exe에서 필요한 dll이 로딩되지 않는 이유는 프로세스가 올라갈 메모리만 할당되고
프로세스 내 메인 스레드가 실행되지 않기 때문에 notepad.exe의 IAT에 있는 dll들이 올라가지 않지만
Suspend 상태가 해제되면 메인스레드가 실행되고 notepad.exe가 정상적으로 실행되며 DLL 또한 로딩된다.
 

프로세스 실행 후

 

프로세스 suspend 상태에서 DLL Injection을 통해 IAT를 동적으로 후킹하면 프로세스 시작전 후킹을 할 수 있다.

'C&C++' 카테고리의 다른 글

WINAPI DLL_PROCESS_DETACH  (1) 2019.08.08
WINAPI Options Using Bit Flag  (0) 2019.08.07
Incremental Linking  (0) 2019.07.10
WINAPI VirtualAlloc and VirtualAllocEx Difference  (0) 2019.07.09
Features And Uses Of STL Container In C++  (0) 2018.11.04

+ Recent posts