있다. [ 33 ] 예를 들면, 배시 셸에서, 이 명령어는 실행 시 링크되는 " test. so " 파일에서 공유 라이브러리와 함께 " prog " 명령어를 실행한다. LD - PRELOAD = ". / test. so " prog 이러한 라이브러리는 GCC에 의해서 - fpic or - fPIC 옵션을 통해 링크될 새로운 전역변수를 포함하는 소스 파일을 컴파일하고, [ 34 ] - shared 옵션으로 링크함으로써 생성될 수 있다. [ 35 ] 이 라이브러리는 프로그램에서 선언된 외부 심볼들에 대한 접근을 갖는다. 또한 디버거 기반 기술도 사용 가능하다. [ 36 ] 각주 [ 편집 ] ↑ 가 나 James Shewmaker ( 2006 ). " Analyzing DLL Injection " ( PDF ). 《 GSM Presentation 》. Bluenotch. 2008년 12월 3일에 원본 문서 ( PDF ) 에서 보존된 문서. 2016년 2월 11일에 확인함. ↑ 가 나 Iczelion ( August 2002 ). " Tutorial 24 : Windows Hooks ". 《 Iczelion's Win32 Assembly Homepage 》. 2008년 8월 1일에
##s ". 《 Iczelion's Win32 Assembly Homepage 》. 2008년 8월 1일에 원본 문서에서 보존된 문서. 2016년 2월 11일에 확인함. ↑ Rocky Pulley ( 2005년 5월 19일 ). " Extending Task Manager with DLL Injection ". 《 CodeProject 》. CodeProject. 2016년 2월 11일에 확인함. [ 깨진 링크 ( 과거 내용 찾기 ) ] ↑ 가 나 Nasser R. Rowhani ( 2003년 10월 23일 ). " DLL Injection and function interception tutorial ". 《 CodeProject 》. CodeProject. 2016년 2월 11일에 확인함. ↑ 가 나 다 라 Ivo Ivanov ( 2002년 12월 2일 ). " API hooking revealed ". 《 CodeProject 》. CodeProject. 2016년 2월 11일에 확인함. ↑ 가 나 다 라 Robert Kuster ( 2003년 8월 20일 ). " Three Ways to Inject Your Code into Another Process ". 《 CodeProject 》. CodeP
to Inject Your Code into Another Process ". 《 CodeProject 》. CodeProject. 2016년 2월 11일에 확인함. ↑ " Working with the AppInit - DLLs registry value ". 《 Microsoft Help and Support 》. 마이크로소프트. 2006년 11월 21일. 2016년 2월 11일에 확인함. ↑ Raymond Chen ( 2007년 12월 13일 ). " AppInit - DLLs should be renamed Deadlock - Or - Crash - Randomly - DLLs ". 《 The Old New Thing 》. 마이크로소프트. 2016년 2월 11일에 확인함. ↑ " dllmain. c ". 《 ReactOS 》. ReactOS Foundation. 2008년 7월 8일. 2016년 2월 11일에 확인함. [ 깨진 링크 ( 과거 내용 찾기 ) ] ↑ AppInit - DLLs in Windows 7 and Windows Server 2008 R2 ↑ 가 나 다 라 Trent Waddington. " InjectDLL ". 2016년 2월 11일에 확인함. ↑ " Dll Injection ". 《 DreamInCode
##프트. 2005년 3월 1일. 2016년 2월 11일에 확인함. ↑ " Dll Injection using SetWindowsHookEx Method ". 《 Game Reversal 》. 2008년 4월 3일. 2016년 2월 11일에 확인함. ↑ " SetThreadContext DLL Injection ". 2007년 1월 16일. 2016년 2월 11일에 확인함. ↑ Ben Botto ( 2008년 9월 6일 ). " DLL Injector ". 2009년 2월 7일에 원본 문서에서 보존된 문서. 2016년 2월 11일에 확인함. ↑ " Secure loading of libraries to prevent DLL preloading attacks ". 마이크로소프트. 2011년 6월 10일. 2016년 2월 11일에 확인함. ↑ Nicolas Falliere ( 2010년 9월 26일 ). " Stuxnet Infection of Step 7 Projects ". Symantec. ↑ Linus Torvalds ; David Engel ; Eric Youngdale ; Peter MacDonald ; Hongjiu Lu ; Lars Wirzenius ; Mitch D'Souza ( 1998년 3월
DLL 인젝션 - 위키백과, 우리 모두의 백과사전 DLL 인젝션 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 컴퓨터 프로그래밍에서, DLL 인젝션 ( DLL injection ) 은 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시킴으로써 코드를 실행시키는 기술이다. [ 1 ] DLL 인젝션은 외부 프로그램을 통해 다른 프로그램에 저작자가 의도하거나 예상하지 않은 영향을 미치기 위해 사용된다. [ 1 ] [ 2 ] [ 3 ] 예를 들면 삽입된 코드는 시스템 함수 호출을 후킹 하거나 [ 4 ] [ 5 ] 또는 보통 방식으로는 읽을 수 없는 패스워드 텍스트 박스의 내용을 읽을 수 있다. [ 6 ] 임의적인 코드를 삽입하는데 사용되는 프로그램을 DLL injector라고 부른다. 목차 1 마이크로소프트 윈도우에서의 접근 2 유닉스 계열에서의 접근 3 각주 4 외부 링크 마이크로소프트 윈도우에서의 접근 [ 편집 ] 마이크로소프트 윈도우에는 프로세스에게 DLL의 코드를 로드하고 실행시키는 여러 방법이 있다. 레지스트리 엔트리 HKEY - LOCAL - MACHINE SOFTWARE Microsoft Windows NT CurrentVers
##ongjiu Lu ; Lars Wirzenius ; Mitch D'Souza ( 1998년 3월 14일 ). " ld. so / ld - linux. so - dynamic linker / loader ". 《 UNIX man pages 》. 2009년 2월 6일에 원본 문서에서 보존된 문서. 2016년 2월 11일에 확인함. ↑ " Code Gen Options ". 《 Using the GNU Compiler Collection ( GCC ) 》. Free Software Foundation. 2016년 2월 11일에 확인함. - fpic Generate position - independent code ( PIC ) suitable for use in a shared library, if supported for the target machine. sqq. ↑ " Link Options ". 《 Using the GNU Compiler Collection ( GCC ) 》. Free Software Foundation. 2016년 2월 11일에 확인함. - shared Produce a shared object which can then be linked with other objects to form an executable. sqq. ↑
##Thread 또는 NtSuspendThread 함수를 사용하고 삽입된 코드를 실행할 목적으로, 존재하는 응용 프로그램 내의 스레드의 문맥을 수정하기 위해 SetThreadContext나 NtSetContextThread 함수를 사용하면 DLL이 로드된다. [ 4 ] [ 29 ] [ 30 ] 익스플로잇은 윈도우에서 한계치들을 디자인하고 모든 검증된 DLL 경로 명시 없이 LoadLibrary 함수를 호출하는 응용 프로그램들을 로드된다. [ 31 ] 응용 프로그램에 명시된 DLL을 원본 같이 똑같은 함수 호출을 내보내게 구현된 로그 교체로 대체하는 것. [ 32 ] 유닉스 계열에서의 접근 [ 편집 ] 유닉스 계열 운영체제에서 ( ld. so ( on BSD ) ( on BSD ) 또는 ld - linux. so ( on 리눅스 ) 를 기반으로 한 동적 링커와 함께 ) 임의적인 라이브러리들은 LD - PRELOAD 환경 변수 내에 있는라이브러리의 경로 이름을 줌으로써 새로운 프로세스에 링크될 수 있다. 이것은 한 프로세스 안에서 전역적으로 또는 개별적으로 세팅될 수 있다. [ 33 ] 예를 들면, 배시 셸에서, 이 명령어는 실행 시 링크되는 " test. so
##HINE SOFTWARE Microsoft Windows NT CurrentVersion Windows AppInit - DLLs 에 목록화 된 DLL들은 User32. dll ( 이것이 프로세스에 부착되는 순간 ) 을 로드하는 모든 프로세스에서 로드된다. [ 5 ] [ 7 ] [ 8 ] [ 9 ] 윈도우 비스타를 시작으로, AppInit - DLL들은 기본 설정으로 비활성화 되어 있다. [ 10 ] Windows 7 이후로, AppInit - DLL 하부 구조는 code signing을 지원한다. 레지스트리 키 HKEY - LOCAL - MACHINE SYSTEM CurrentControlSet Control Session Manager AppCertDLLs 아래 목록화 된 DLL들은 Win32 API 함수들인 CreateProcess, CreateProcessAsUser, CreateProcessWithLogonW, CreateProcessWithTokenW 그리고 WinExec를 호출할 때 로드된다. CreateRemoteThread 같은 프로세스 조작 함수들은 실행 중인 프로그램에 DLL을 삽입
링크 편집 이 문서는 2019년 5월 12일 ( 일 ) 12 : 56에 마지막으로 편집되었습니다. 모든 문서는 크리에이티브 커먼즈 저작자표시 - 동일조건변경허락 3. 0에 따라 사용할 수 있으며, 추가적인 조건이 적용될 수 있습니다. 자세한 내용은 이용 약관을 참고하십시오. 미국 및 다른 국가에 등록되어 있는 Wikimedia Foundation, Inc. 소유의 등록 상표입니다. 개인정보 정책 위키백과 소개 면책 조항 개발자 쿠키 정책 모바일 보기
로드된다. CreateRemoteThread 같은 프로세스 조작 함수들은 실행 중인 프로그램에 DLL을 삽입하기 위해서 사용될 수 있다. [ 5 ] [ 6 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] 타겟 프로세스의 handle을 오픈한다. 이것은 프로세스를 생겨나게 하거나 [ 15 ] [ 16 ] 프로세스에 의해 생겨났으며 존재한다고 알려진 것 ( 예를 들면 예상 가능한 타이틀을 가진 윈도우 [ 17 ] ) 을 키 오프하거나, 실행중인 프로세스들 [ 18 ] 의 목록을 얻고 타겟 실행 파일의 이름을 조사함으로써 이루어된다. [ 19 ] 타겟 프로세스에서 메모리를 할당하고, [ 20 ] 할당받은 메모리에 인젝트될 DLL의 이름을 쓴다. [ 11 ] [ 21 ] 이 단계는 만약 적절한 DLL 이름이 이미 타겟 프로세스 안에서 사용 가능하다면 건너뛸 수 있다. 예를 들면, 프로세스가'User32. dll ','GDI32. dll ','Kernel32. dll'또는'32. dll'로 끝나는 다른 라이브러리와 링크되어 있다면, 로드하는 것이 가능하다. 이 기술은 과거에는 DLL 인젝션에서 프로세스들을 지키는 방식에 대해 효과적이라고 입증되었다.
컴퓨터 프로그래밍에서 DLL 인젝션(DLL injection)은 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시킴으로써 코드를 실행시키는 기술이다. DLL 인젝션은 외부 프로그램을 통해 다른 프로그램에 저작자가 의도하거나 예상하지 않은 영향을 미치기 위해 사용된다. 예를 들면 삽입된 코드는 시스템 함수 호출을 후킹 하거나 또는 보통 방식으로는 읽을 수 없는 패스워드 텍스트 박스의 내용을 읽을 수 있다. 임의적인 코드를 삽입하는데 사용되는 프로그램을 DLL injector라고 부른다.