훈, IT 공부/Reversing

[DLL Injection]CreateRemoteThread API

IT훈이 2018. 8. 24.
반응형

DLL Injection API


▶ CreateRemoteThread()
- DLL Injection 을 할때 많이 사용하는 방법이 CreateRemoteThread() API를 사용하는 것이다.
- 윈도우는 CreateRemoteThread() API를 통하여 다른 프로세스에 스레드를 쉽게 생성할 수 있는 방법을 제공한다.
함수의 원형
HANDLE CreateRemoteThread(
  HANDLE                  hProcess,
  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  SIZE_T                     dwStackSize,
  LPTHREAD_START_ROUTINE lpStartAddress,
  LPVOID                   lpParameter,
  DWORD                  dwCreationFlags,
  LPDWORD               lpThreadId
);
- hProcess : 프로세스의 핸들을 넣는다.
- lpStartAddress : 호출할 주소를 넣는다.
- lpParameter : 호출할 주소에 넘길 파라미터값을 넣는다.

▷ DLL Injection을 할때 사용되는 방식.
- hProcess : DLL Injection 대상 프로세스 핸들
- lpStartAddress : LoadLibrary() 의 주소.
- lpParameter : 대상 프로세스 메모리에 인젝션할 DLL을 기록한 주소. 

가장 유연성이 뛰어난 DLL 인젝션 기법 중 하나로 꼽히고 있다. DLL 인젝션에서는 CreateRemoteThread() API를 활용하여서 DLL 인젝션을 할 대상의 프로세스가 LoadLibrary() 함수를 사용하여 DLL을 호출하게 만들어준다.  

자세한 것은 MSDN 을 참조해보자.





반응형

댓글