Profile

youngsouk

youngsouk

dll injection 방법

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.egloos.com/v/10863964

이 글에 따르면 LoadLibrary() 는 매크로로 정의되어있고 즉 LoadLibraryW는 유니코드 버전 LoadLibraryA는 유니코드가 아닌 버전이다.


registry(레지스트리) 사용

1. AppInit_DLLs 레지스트리에 원하는 DLL 경로

2. LoadAppInit_DLLs를 1로 변경

3. 재부팅

 

'윈도우' 카테고리의 다른 글

ZwResumeThread() 후킹  (0) 2019.10.28
스텔스 프로세스  (0) 2019.10.28
API hooking  (0) 2019.10.24
윈도우 관련 볼 것들  (0) 2019.10.24
window code injection  (0) 2019.10.23