cdor1's lab
ReverseLab2: DLL Injection 본문
'DLL Injection'
1. DLL이란 무엇인가?
마이크로소프트가 만든 동적 링크 라이브러리다.
내부에는 프로세스가 불러서 사용할 수 있는 다양한 함수들을 가지고 있다.
DLL에게는 2가지 사용(링킹) 방법이 있는데 이는 묵시적, 명시적 링킹이다.
묵시적 링킹: 파일 자체에 어떤 DLL의 어떤 함수를 사용하겠다는 정보를 포함시키고 OS가 파일 실행 시 해당 함수들을 초기화한 후 이용하는 방법.
명시적 링킹 : 프로그램이 실행 중일 때 API를 이용하여 DLL 파일이 있는지 검사하고 동적으로 원하는 함수만 불러와서 쓰는 방법.
이러한 두가지 라이브러리 링킹 방법이 있다.
2. DLL Injection은 무엇인가?
※오타수정※
프로세서X -> 프로세스O
'자박꼼X -> D박꼼'
'Special thanks to HUBEEN'
HUBEEN형이 제공해주신 이 사진이 가장 DLL Injection을 잘 표현하였다고 생각한다.
D박꼼 아저씨가 설명해 주셨듯이, 프로세스에 DLL을 박아넣으면(인젝션) 프로세스가 꼼짝도 못할만큼 그 위력이 어마어마하다.
아래 그림같지않은 그림을 보자.
----------------
ㅣ .text ㅣ
----------------
ㅣ .data ㅣ
-----------------
Hack.dll--->--->
USER32.dll
Kernel32.dll
.
.
.
뭐 이러한 식으로 프로세스 메모리 공간에 Hack.dll이라는 DLL을 강제로 로딩 한다면 이 DLL은 인젝션된 프로세스 메모리에 정당한 접근 권한이 생겨
프로세스의 다양한 부분을 컨트롤 할 수 있게 된다.
3. DLL을 만들어보자
VS를 열고 DLL에 체크한 뒤 DLL파일을 만들어 주면 된다.
'Security > Reversing' 카테고리의 다른 글
CodeEngn Advance 03 (0) | 2017.03.22 |
---|---|
CodeEngn Advance 02 (0) | 2017.03.21 |
CodeEngn Advance 01 (0) | 2017.03.20 |
codegate 2017 angrybird (0) | 2017.03.05 |
ReverseLab1: UPX packed PE File analyze (0) | 2016.07.27 |