• Blog
  • Local Log
  • Tag Cloud
  • Key Log
  • Guestbook
  • RSS Feed
  • Write a Post
  • Admin

혹시 블로그 스킨이 깨져 보이시나요? 최신버전의 Internet Explorer(Windows용), Opera, Firefox를 사용해보세요.

Detours 에서 Detoured.dll 제거하기

Hacking/Virus/Vaccine
2008/07/09 16:48
 

Detours 라이브러리는 현존하는 API 후킹 라이브러리중에 가장 뛰어나고 가장 심플한
후킹 라이브러리이다. 또한, 고급후킹방법과 최고레벨의 후킹기술을 보여주는 샘플도
함께제공한다. 무엇보다 VC++ 을 하는 사람한테는 델파이의 매드훅라이브러리가 부럽지
않게 해줄 정도의 완벽한 후킹라이브러리이다. 이것을 해커들도 알고있으므로 1.5 버전
부터 해커들의 책에 자주등장하였다. 이 Detours 라이브러리의 처음 배포시점의 이미지와
설명법이 rootkit 책에서 조차 인용되고있을 정도로 유명한 라이브러리이다. 이 라이브러리의
응용법은 무궁무진하다. 다만, 고급으로 사용하려면 그만큼의 많은 연습과 노력이 필요하다.
여기까지 라이브러의 설명을 마치고 1.5 버전과 최신버전의 2.1 버전에서 발생하는 문제를
해결하기로한다. 1.5 버전까지는 아주 그야말로 환상적이었지만 반면에 어딘가 모를 불안함
이 있었다. 예를들면 소켓을 후킹하면 connect 시에 항상 에러를 발생시킨다던가 기타등등의
몇가지 api 후킹시에 이상한 에러를 내뱉었다. 그러므로 1.5 는 버리라고 과감히 말하고싶다.
2.1 버전에는 저자가 설명하길 몇가지 심각한 버그들이 해결되었다고 했으므로 2.1 버전을
사용하는 것이 안전한 후킹을 할 수 있다. 그런데 항상 발생하는 문제이지만 업그레이드만
되면 되는데 항상 뭔가 불편함이 따라붙기 마련이다. 역시 2.1 버전으로 업그레이드 되면서
불편함이 따라붙었다. 불필요한 dll 파일을 요구하는 것이다. 필자는 처음부터 이점을 제거해서
쓰고있었다가 다른 사람들도 필요할거 같아서 제거하는 방법을 팁으로 적어볼까 한다.
어쩌다보니 Detours 를 지우게되어서 다시 받아서 설치하고 쓰려니 요놈의 혹이 다시 귀찮게
굴어서 패치하고나서 컴파일하는 시간에 글을 작성해본다.
--------------------------------------------------------------------------------------

Detours 1.5 가 아닌 2.1 버전부터는 인젝션시에 항상 Detoured.dll 파일이 같이 있어야 한다.
즉, 한개의 파일로 심플하게 후킹을 걸었던 예전과 달리 쓰잘데기없는 혹이 달려있다. Detoured.dll 의
역할은 확인해보면 알겠지만 마커이다. 즉, 해커가 만들은 dll 파일이 Detours 를 이용한 후킹파일인지
확인하기위한 용도이므로 아무런 역할도 없다. 이 혹을 떼어버리기 위해서 다음과 같이 몇군데만 바꾸
자.

다음의 사이트에서 Detours 라이브러리를 다시 받는다.
http://research.microsoft.com/sn/detours/

DetoursExpress2.1 버전에는 Build215 버전과 Build216 버전이 있는데 최근버전이 216 버전이므로
기존에 갖고있다고 하더라도 Build215 버전일 것이다. 그러므로 새로 받는다.
(차이점은 lib 파일을 다 비교해 보았는데 빌드상 차이가 없었다. 아마도 샘플이 늘어난듯하다.)

설치경로가 C 드라이브라고 가정하면 다음의 경로에서 각각의 파일들을 열어서 패치한다.
C:\Detours Express 2.1\src
-----------------------------------------------------------------------------------
[makefile 파일의 69 번째 줄]
CFLAGS=$(CFLAGS) /Gs /DDETOURS_X86=1 /D_X86_ /DDETOURS_INTERNAL_USAGE

위와 같이 /DDETOURS_INTERNAL_USAGE 를 삽입해서 컴파일시 정의문을 하나 삽입한다.
-----------------------------------------------------------------------------------
[detours.cpp 파일을 열어서 USAGE 로 검색하라(총 두군데)]
#ifdef DETOURS_INTERNAL_USAGE
// #error Feature not supported in this release.
#else
    Detoured();
#endif

위와 같이 #error 전처리를 무시하도록 주석처리한다. 위에서 makefile 에서 정의했기 때문에
빠져드는 쪽은 #error 쪽이고 Detoured(); 를 호출하지 않는 것을 알수 있다.
-----------------------------------------------------------------------------------
USAGE 라는 단어로 다시한번 검색하면 한군데가 더 검색될 것이다.(총 두군데)

#ifdef DETOURS_INTERNAL_USAGE
// #error Feature not supported in this release.
    return (HMODULE)NULL;
#else
    return Detoured();
#endif

위와 같이 패치하라. 마찬가지로 #error 전처리로 강제 컴파일에러를 무시하고 핸들에 NULL 을
돌려주도록 추가하라. 그러면 역시 Detoured(); 함수는 무시된다.


이제 C:\Detours Express 2.1\ 디렉토리에서 nmake 를 입력하면 Detoured.dll 이 필요없는
Detours.lib 파일이 생성된다. dll 인젝션을 위한 setdll.exe  과 withdll.exe (샘플에 존재)
파일은 Detours 라이브러리 1.5 버전(인터넷에 있음. 검색을 생활화..)에 있는 것을 사용하면
Detoured.dll 파일을 지정할 필요가 없고 기능은 동일하다.

p.s: (초보자를 위한 도움말)
      nmake 명령은 콘솔명령이므로 cmd (도스창)창에서 입력하며 그냥 입력하면 경로와
      환경변수가 셋팅되어있지 않으므로 사용할 수 없으므로 VC++ 6.0 이 설치된 디렉토리로
      가서 VCVARS32.BAT 라는 파일을 도스창에서 실행시켜줘야만 사용이 가능하다.


---------------------------------------------------------------------------------------
[어차피 아무도 안할테니까.. 그냥 첨부파일로 쓰기좋게 이미 다 해놓고 올린다. -_-; ]
---------------------------------------------------------------------------------------
첨부파일은 이미 패치한 Detours Express 2.1 Build216 버전이며
Detoured.dll 을 요구하지 않는 버전인 Detours 라이브러리 1.5 용
withdll.exe 와 setdll.exe 를 첨부하였다.

출처 : 시큐리티프로프(http://www.securityproof.org )

Detours_Express_2.1_Build216_(DetouredPatched_by_AmesianX).zip
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
TAG Detour, Detoured.dll, Detours Express, Detours 라이브러리, 후킹, 후킹 API, 후킹 라이브러리
No received trackback. / No comment.

Trackback Address :: http://sinwoong.co.kr/trackback/258

You can also say.

Prev 1 ... 34 35 36 37 38 39 40 41 42 ... 285 Next
달빛는 지금.. 파이팅파이팅
C와 Assembly를 제2외국어로...
남자RH+ O형사수자리경기도

카테고리

  • 전체 (285)
    • Project HSL (2)
    • Project Talk (8)
    • 생각 (16)
    • 일상 (18)
    • 정보/스크랩 (64)
    • 용어사전 (4)
    • IT외부행사 (15)
    • ASSEMBLY (7)
    • Win32 API/MFC (29)
    • Hacking/Virus/Vaccine (24)
    • 관심거리 (3)
    • 스킨/플러그인 (2)
    • 시간 죽이기 (2)
    • 천연 비누/화장품 (10)
    • Windows Server 2008 (57)
    • 디바이스 드라이버 (23)
    • 카드 (1)
    • 지식베이스캠프 (0)
    • 소프트캠프 업무 일지 (0)

태그목록

  • 계획
  • 일기장
  • 골드라이프
  • 블로그
  • CISSP 연기
  • 전자계산기일반
  • 500GB
  • EDI
  • Code Red Worm
  • 후킹 API
  • Crimeware
  • 사이버 포렌식
  • Drag
  • PCI
  • 조기교육
  • C
  • 보호
  • Business knowledge
  • SSD
  • 겨울방학
  • 컴퓨터 중독
  • 하청업체
  • 400D
  • IDE
  • 패스워드
  • 백신
  • 악성 툴바
  • 악성 댓글
  • 플래시
  • Office Security

최근에 올라온 글

  • ExitProcess(), Termina....
  • C/C++ 격리된 응용 프로....
  • EnumPrinters.
  • 알고 있어야 도움이 되....
  • Microsoft Windows XP....

최근에 달린 댓글

  • 잘보고 갑니다 : ). hothead 07/16
  • 좋은 글 잘읽었습니다. ^^. Rhea君 05/06
  • 좋은 소프트웨어네여. montreal florist 01/12
  • 좋은 정보 감사드립니다.... dinga 2009
  • 관리자만 볼 수 있는 댓.... 2009

최근에 받은 트랙백

  • Windows 시스템 실행파.... 김재호의 디지털보단 아... 02/14
  • 스레드만 사용하면 컴퓨.... 철없는강아지의 블로그 2008
  • 언제 다이어그램을 그려.... 너구리의 프로그래밍 세계 2007
  • 국내 웹환경에 기대를.... *~アスタリスク~ 2007
  • [플러그인] IS Flash Vi.... ISCUBIX.COM 2007

글 보관함

  • 2010/06 (1)
  • 2010/03 (2)
  • 2009/09 (1)
  • 2009/04 (2)
  • 2009/03 (5)

달력

«   2010/07   »
일 월 화 수 목 금 토
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

  • IT 용어사전.
  • Total : 281974
  • Today : 34
  • Yesterday : 129
Tattertools
Eolin
rss

달빛's blog is powered byTattertools1.5.3.1 : Adamantine
Skin by Nyangkum