http://vbdream.tistory.com/entry/Kernel-DLL-%EC%9D%B8%EC%A0%9D%EC%85%98%EC%9D%84-%ED%9A%A8%EA%B3%BC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%B0%A8%EB%8B%A8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95-Caller-Verification이런 방법이 있었다니... 멋지군요~~
몇가지 Dll Injection 차단방법에 대한 설명이 나와있는데, SetWindowsHookEx를 이용한 Dll Injection 차단에 대한 내용도 있습니다.
기본적인 컨셉은, LoadLibrary등 Dll을 로드할 수 있는 모든 함수를 후킹한 후 이 함수를 호출한 지점이 어디인가를 검사하는 것입니다. SetWindowsHook의 경우 User32.dll!ClientLoadLibrary 라는 내장함수가 Dll 로딩함수를 호출한다고 하네요. 즉, Dll Loading함수를 호출한 Caller주소가 User32.dll!ClientLoadLibrary 라면 SetWindowsHook으로 로딩된는 Dll이라고 볼수 있는거죠.
말하자면 유저레벨에서의 차단방법이죠. (대충 읽어본 거라서 정확한 내용이 아닐지도.. ㅎㅎ)
'C++' 카테고리의 다른 글
VirualStudio Profiler를 이용한 Application 성능 튜닝 (병목 찾기) (4) | 2010.07.21 |
---|---|
Side-by-Side 문제 관련 (4) | 2010.02.11 |
C++ Calling Conventions 관련된 내용 정리 (0) | 2010.01.19 |
Hidden Process 찾는법 총정리 (0) | 2010.01.16 |
Registry Key / ValueName / Value의 최대 길이 (0) | 2009.12.10 |