본문 바로가기
reversing

DLL 인젝션

by 코끼리_땃쥐 2023. 1. 2.
반응형

DLL 인젝션이란 실행 중인 다른 프로세스에 특정 DLL파일을 강제로 삽입하는 것입니다.

 

DLL 인젝션 구현 방법

다른 프로세스에게 dll 인젝션을 하기 위해 아래와 같이 크게 세가지 방법이 존재합니다.

- 원격 스레드 생성 (CreateRemoteThread() API)

- 레지스트리 이용(AppInit_DLLs 값)

- 메시지 후킹(SetWindowsHookEx() API)

 

CreateRemoteThread()

1. 대상 프로세스 핸들을 구한다

2. 대상 프로세스 메모리에 인젝션할 DLL 경로를 써준다.

3. LoadLibraryW() API 주소를 구한다.

4. 대상 프로세스에 원격 스레드(Remote Thread)를 실행한다.

 

 

 AppInit_DLLs

 DLL 인젝션을 하기 위한 두번째 방법은 레지스트리(Registry)를 이용하는 것입니다.
Windows 운영체제에서 기본으로 제공하는 AppInit_DLLs와 LoadAppInit_DLLs 라는 이름의 레지스트리 항목이 있습니다.
AppInit_DLLs항목에 인젝션을 원하는 DLL 경로 문자열을 쓰고 LoadAppInit_DLLs항목의값을 1로 변경한 후 재부팅하면, 실행되는 모든 프로세스에 해당 DLL을 인젝션 해줍니다.

 

 

SetWindowsHookEx()

DLL 인젝션을 하기 위한 세번째 방법은 메시지 후킹을 이용하는 것 입니다. SetWindowsHookEx() API를 이용하여 메시지 훅을 설치하면 OS에서 hookprocedure를 담고 있는 DLL을 (창을 가진) 프로세스에게 강제로 인젝션합니다.

 

반응형

'reversing' 카테고리의 다른 글

인젝터를 만들어 보았다.  (0) 2023.01.24
notepad.exe 프로세스 숨기기 성공 !!  (0) 2023.01.12
Base Relocation Table  (0) 2022.12.14
IAT & EAT  (0) 2022.12.12
PE File Format 중요 멤버 간단정리  (0) 2022.12.05

댓글