OllyDBG Plugin - GODUP





좀 오래된 플러그인이긴 한데, 별로 아시는 분이 없는 것 같아서 한번 소개해봅니다.
GODUP 라는 플러그인인데, 기능은 좀 잡종이라 이것저것 다 설명하긴 좀 그렇고요
(resource hack 이나 PE Scanner 같은 기능은 제쳐둡시다)
map loader 라는 기능, 이걸 한번 도마 위에 올려 보겠습니다 :)

이 기능이 어떤 것이냐면 map 파일을 플러그인에서 지정해 줄 경우,
현재 분석중인 바이너리를 map 파일로 매칭시켜서 디스어셈블리 창에 뿌려주는 겁니다.
즉, map 파일이 있는 바이너리를 분석할때는 아주 좋죠~
(map 파일이 없는 바이너리야 뭐 아무 상관없는 플러그인이지만...  ;;; )

한번 볼까요~

예를 들어 리버싱 시에 이런 코드가 있습니다.
뭐하는 call 문인지 안에 헤집고들어가서 후벼보기까진 알 수 없죠 :(

사용자 삽입 이미지

그런데 GODUP 로 한번 map 파일을 연결해주면 아래와 같이 바뀝니다!
올리디버거 상의 디스어셈블리 코드를 map 파일에 나온 함수명대로 연결시켜준겁니다 오 좋아요 ~!

사용자 삽입 이미지

자~ 이제 첫번째 call 문은 InitNSS() 라는 함수고, 두번째 call 문은 OnButtonStart() 라는
것을 알 수 있네요! 이름으로 추정해보면 대충 함수의 역할은 알 수 있죠 ㅎ 첫번째 함수는
초기화 루틴에 쓰일 것이고 두번째 것은 머 button handler 라는 것 까지 파악이 가능합니다 :)
그리고 이 함수는 CNSS_GUIDlg 라는 class 의 member 함수라는 것 또한 확인이 되고요

이런 기능 덕에 용이해지는 상황

1) 내 코드 리버싱
저희 같은 리버싱 떨거지 부류들은, 디버깅할 때 비주얼 스튜디오의 디버깅 환경을
이용하지 않고 (디버그 빌드 조차 안합니다 only Release Build ㅎㅎ) 자기가 만든
바이너리임에도 불구하고 ollyDBG 나 windbg에 붙혀서 디버깅 하죠 ㅋ
이런 상황일때 GODUP 는 아주 큰 힘을 발휘합니다.
적어도 내가 만든 코드를 보며 어디가 어딘지 몰라서 방황하는 시간은 확실히 줄여 줍니다 ;


2) 코드 컨설팅, 취약점 분석
코드 컨설팅 혹은 취약점을 찾고 있을 때
그 많은 코드를 모두 리버스 엔지니어링으로 확인하기는 사실 힘든 부분이 없지 않아 있죠.
그래서 부분적으로라도 개발팀에 소스를 요청하는데, 개발 보안 정책상 소스를 밖으로 빼낼
수 없는 경우도 있고, 컨설턴트 ㅅㅂ야 니가 어느정도 하나 보자 등 괜히 안줄때도 있습니다. :)

음 그럴땐 어떻게 어떻게 일단 map 파일이라도 받아냅니다.
그리고 그걸 현재 바이너리랑 맵핑시켜서 돌리면 오우~ㅋ
작업능률이 10배는 향상되죠.
그리고 소스 없이 리버스 엔지니어링만으로 상대방의 코드를 깔 수 있는 기회가
좀더 빠른 시간안에 생기는거죠 :p
(아으... 혹시 이 블로그를 보는 우리회사 개발자들 이제 저한테 맵파일 안주는거 아니겟죠 ;;; )

그래서 암튼 저는 주로 map file - exe file 맵핑에 이 플러그인을 많이 씁니다.

요점은 이런식으로 map 파일을 연결시켜주는 플러그인이 있고
그것을 올리디버거에서 이렇게 훌륭히 사용할 수 있다는 것이 되겠습니다 :)
그냥 악성코드만 보시는 분들은 필요 없는 플러그인이 될수도 있겠지만요...;

window31. 2009년 3월


ps
음 그냥 문맥상 코드를 깐다... 라고 표현했는데,
사실 실제 업무를 할때, 컨설팅 받는 입장이 더 고마운 것이긴 하지만
오히려 공격하는 입장에서 더 굽신굽신 해야 한다고 생각합니다.
코드를 공격하면서 거만하거나 매너 없는 사람... 크랙질이나 다를 바 없다고 보이거든요
진정한 남자라면 굽신모드.

Posted by window31


트랙백 보낼 주소 : http://window31.com/trackback/251 관련글 쓰기

댓글을 달아주세요

  1. 2009/03/26 09:52
    댓글 주소 수정/삭제 댓글
    이런걸 진작에 알려주질않고;;..-ㅂ-;;
    방금 GODUP 다운받았어요;;ㅋㅋㅋㅋ
    • 2009/03/26 10:47
      댓글 주소 수정/삭제
      글고보니 첨부파일을 집어넣지 않았네...
      다시 첨부했음
  2. 2009/03/27 11:53
    댓글 주소 수정/삭제 댓글
    진정한 남자라면 굽신모드...
    요즘들어 실감하는 말이네요.
    같은 회사 개발자들 상대로 "제발 한번만 컨설팅 받아주세요.
    굽신굽신 도와주세요... " 이러고 살아요.
    map파일있으면 windbg를 먼저 사용하게 되더라구요.^^
    GODUP도 앞으로 써봐야 겠네요.
    • 2009/03/30 09:29
      댓글 주소 수정/삭제
      하하하
      "저는 제발 이렇게 좀 고쳐주세요"
      라고 하죠 : )
  3. 2009/03/27 16:27
    댓글 주소 수정/삭제 댓글
    오래된 기억이라 애매한 질문인데요, map파일이 있다면 이미 pdb나 sym같은것도 있을건데(아니면 변환해서), 그러면 ollydbg에서 그냥 로딩 해주지 않나요? (저는 ida만 썼어서 질문이 좀 이상해도 이해해주세요ㅎㅎ)
    • 2009/03/30 09:30
      댓글 주소 수정/삭제
      ollydbg 디폴트 버전에서 map 파일을 그냥 로딩해주진 않습니다 ^;
  4. seyool
    2009/03/27 17:31
    댓글 주소 수정/삭제 댓글
    그동안 왜 이런생각을 못했을까요.. OTL
  5. 2009/04/15 19:00
    댓글 주소 수정/삭제 댓글
    map 파일조차도 없는 프로그램 분석할 때에는, IDA에서 map 파일 생성해서 연결해주면 '그나마' 도움이 좀 될것 같습니다.
    • 2009/04/17 16:48
      댓글 주소 수정/삭제
      '그나마'인가요 ㅎㅎㅎ 패킹된거(특히 Themida) 때문에 요즘 IDA 쓰는 비중이 줄어드는 중 ㅠㅠ
  6. 2009/09/21 06:56
    댓글 주소 수정/삭제 댓글
    ㅋㅋㅋ 언제나 봐도 재밌는 글이네요

BLOG main image
by window31

카테고리

분류 전체보기 (272)
Reverse Engineering (21)
C, C++ (20)
Kernel (8)
Guitar (18)
잡담 (74)
etc (6)
who am i (8)
보안 이야기 (85)
Tools (3)
월간 마이크로소프트웨어/.. (28)

글 보관함