tool
InjDll.exe – DLL Injection/Ejection 전용 도구
reversecore
2010. 3. 15. 00:23
반응형
제가 개발한 InjDll.exe 프로그램을 소개합니다.
이 프로그램을 이용해서 원하는 DLL 을 대상 프로세스에 Injection/Ejection 시킬 수 있습니다.
DLL Injection 에 관련된 설명을 아래 링크를 참조하세요.
InjDll.exe (Ver 1.0.0)
제 블로그 study 에서 자주 소개되는 프로그램입니다.
소스를 조금 다듬고 기능을 추가시켜서 정식 버전(1.0.0)으로 배포합니다.
이 프로그램은 공개용이며, 자유롭게 사용하실 수 있습니다.
* 주의!
기본적으로 Windows 2000 이상만 지원합니다. (Windows 7, XP 에서 테스트 되었습니다.)
Windows 9X 계열에서는 사용하실 수 없습니다.
사용방법은 아래와 같습니다.
InjDll.exe <procname|pid|*> <-i|-e> <dll path>
<procname|pid|*>
procname Process name (ex: explorer.exe, notepad.exe, etc)
pid Process ID
procname Process name (ex: explorer.exe, notepad.exe, etc)
pid Process ID
<-i|-e>
-i Injection Mode
-i Injection Mode
-e Ejection Mode
<dll path> DLL File Path (relative or full)
사용 예
- PID 2840 프로세스에게 dummy.dll 파일을 Injection 시킬 때
- IE 프로세스에게 dummy.dll 파일을 Injection 시킬 때
- 모든 프로세스에게 dummy.dll 파일을 Injection 시킬 때
Ejection 은 –i 대신 –e 를 사용하면 됩니다.
InjDll.exe (Ver 1.1.1)
InjDll.exe 가 버전업 되었습니다. (2010.10.29)
추가/변경 사항
1. 64bit 지원
InjDll64.exe 를 이용하여 64bit 프로세스에 64bit DLL 파일을 인젝션 시킬 수 있습니다.
* 64bit 프로세스에 DLL Injection 을 하기 위해서는 Injector(InjDll64.exe) & DLL 파일이 모두 64bit(PE32+) 이어야 합니다.
2. <dll path> 의 "상대 경로" 지원
아래와 같이 Dll 파일 위치를 상대 경로로 입력할 수 있습니다.
InjDll32.exe notepad.exe -i dummy32.dll
InjDll32.exe calc.exe -i ..\hook.dll
...
InjDll32.exe calc.exe -i ..\hook.dll
...
주의사항
1) 원격 스레드를 실행시켜 LoadLibrary() 를 호출하는 방식이므로 대상 프로세스에 kernel32.dll 이 로딩되어 있지 않다면 Injection/Ejection 작업은 실패합니다.
2) 접근 권한이 제한된 (보호받는) 프로세스나 Anti-Injection 기법이 적용된 프로세스 들에게도 역시 Injection/Ejection 작업은 실패합니다.
3) 원칙적으로 Injection 을 N 번 시켰을 때 Ejection 도 같은 횟수로 호출해 줘야 해당 DLL 이 제대로 unloading 됩니다.
Bugs
사용하시다가 버그가 발견된다면 댓글로 알려주시면 감사하겠습니다.
ReverseCore
위 글이 도움이 되셨다면 추천(VIEW ON) 부탁 드려요~
반응형