윈도우 후킹 테크 맵 https://reversecore.com/55?category=216978
code injection도 결국엔 CreateRemoteThread()라는 함수를 불르는 것이다. 1. OpenProcess()로 process handle 얻기 2. VirtualAllocEx()로 메모리 할당 3. WriteProcessMemory() 함수를 통해 실행할 (함수 주소와 인자) 구조체 주소 저장 4. VirtualAllocEx()로 메모리 할당 5. WriteProcessMemory() 함수를 통해 실행할 코드 저장 6. CreateRemoteThread()함수를 사용하여 5번과정에서 저장한 코드의 주소와 3번 과정에서 저장한 인자로 호출
CreateRemoteThread 1. OpenProcess() 함수로 dll injection할 프로세스 HANDLE 구하기 2. VirtualAllocEx() 함수를 통해 dll injection할 프로세스에 메모리 할당 3. WriteProcessMemory()함수를 통해 로드할 dll dll이름을 입력한다. 4. LoadLibraryW함수의 주소를 구한다. - kernel32.dll 은 프로그램마다 시작 위치가 똑같다. 5. CreateRemoteThread()함수를 통해 원격 스레드를 생성시켜 거기서 LoadLibraryW함수를 실행시켜 우리가 원하는 dll 로드 4번 에서 우리는 LoadLibrary()함수로 쓰는데 LoadLibraryW함수의 주소를 구하는 이유는 http://javahawk..