Reverse Engineering/Reversing 도움자료

[Reversing 도움자료] OllyDBG 플러그인_<GODUP>

mulmajung 2011. 4. 16. 22:45

작성자: window31
출   처: Broken Code[http://www.window31.com]




좀 오래된 플러그인이긴 한데, 별로 아시는 분이 없는 것 같아서 한번 소개해봅니다.
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월