Upack

요 녀석이 많이 알려졌는지는 잘 모르겠지만..;;;

실행압축프로그램중에 하나입니다.

( "실행압축프로그램"이라면 UPX, FSG, ASPack 등과 같이 실행파일을 대상으로 압축하고,
   압축된 상태에서 실행이 가능하도록 해주는 유틸의 한 종류입니다. )

제가 Upack 을 처음알게 된 건, 음;;.. 회사에 입사하고 2~3달 정도 지났을 시점이니;;

작년 여름(2006년 6~7월)쯤이겠네요;;

그 당시는 한참 "실행압축해제기법" 연구에 몰두하고 있던 기억이..^^;;;


인터넷 검색하다가 우연히 알게되었는데... 그 때는 저에게 정말 신선한 충격이었습니다.

전문가는 아니지만 이런저런 것들을 하면서 나름대로는 실행파일구조에 대해서는

어느 정도는 알고 있다고 생각했는데... 제가 알고 있던 고정관념을 한방에...

날려버린 녀석이 요.. Upack 입니다.


사용자 삽입 이미지

NOTEPAD.EXE 정상 파일


사용자 삽입 이미지

NOTEPAD.EXE Upack으로 실행압축한 상태


보통 윈도우즈 실행파일(대부분 PE 파일)의 경우 위의 첫번째 캡쳐와 같은 구조로 되어있습니다.

제일 첫부분에 'MZ'로 실행파일이란 것을 명시하고, 그 다음 DOS Stub 코드가 들어가고..

실제 PE 파일의 내용이 들어가있습니다.


Upack 으로 압축된 위의 두번째 캡쳐는 약간 다른 형태란 걸 확인할 수 있을 것입니다.

PE 파일의 시작부분이 DOS Stub 영역과 겹쳐있는 상태인데...;; 어쨌든 실행은 됩니다.


PE 파일의 경우 파일의 첫부분에 'MZ'로 실행파일임을 명시하고..

0x3C 에 PE 헤더의 위치를 기록하고 있습니다.

그리고 Upack 을 알기 전까지는 모든 실행파일들의 PE 헤더의 위치가..

0x3C 보다 뒤에 위치했는데;;;.. Upack 으로 압축된 실행파일들은..

0x3C 보다 앞이더군요;; 신기했습니다...

PE 시작부분과 DOS Stub 이 겹치더라도... PE 정보만 정확하게 들어있다면

실행에는 아무런 문제가 없다는 걸 이때 알았습니다;;ㅋ


살짝, 궁금한게 있다면;;.. Upack 으로 압축된 실행파일을 DOS 모드에서 실행시키면..

어떻게 될까..하는거;;ㅋ

보통은 DOS 모드에서 실행시킬 수 없다는 메시지를 찍으면서 정상적으로 종료가 되는데;;

Upack 에서는 그 부분이 없거든요;;ㅋ.

담에 언제... 시간과 여건이 되면 한번 실험해봐야겠네요..^^;;;ㅋ

아;; 이미 알고 계신분 계시다면 알려주시는 것도 괜찮구요~~:D

( 여담이지만 공개되어있는 PE 파일의 정보를 보여주는 툴들이 많은데,,,,
  그 중에서도 교과서적인 방법을 사용하는 일부 툴들에서는 Upack 으로 압축된 파일은
  인식을 못하는 경우도 있습니다. )
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. BlogIcon viruslab 2007.12.04 14:46  댓글주소  수정/삭제  댓글쓰기

    훈련 잘 받고 왔나요?^^

    • BlogIcon XeroNic(HS) 2007.12.04 17:49 신고  댓글주소  수정/삭제

      네..ㅋ;; 한번정도는 가볼만 한것 같아요..;;
      (한번정도는;;..)
      감기걸려서.. 목상태가 아직도 정상이 아닌건
      좀 그렇지만..ㅋ..^^;;

  2. BlogIcon jz 2008.12.09 15:53  댓글주소  수정/삭제  댓글쓰기

    회사에서 인턴들 리버싱 교육시킬 때 pe 교육 후 hex editor로 실행 파일을 만들게 시키는데요

    쉽게 만들어 본 다음에는 최소크기로 만들어 보라고 시킵니다. 아이디어들이 참 대단하더군요

    도스헤더 속에 nt헤더가 들어가고 그속엔 또 import table과 코드를 넣고 이런식? ㅋㅋ

    최소크기는 133바이트정도였습니다. 크~

    • BlogIcon XeroNic(HS) 2008.12.09 16:07 신고  댓글주소  수정/삭제

      ㄷㄷ.. 무슨 도스 프로그램도 아니고...ㅋ;;
      PE 형식을 갖추면서도~ 133 바이트 정도까지 가능한가보군요;;;

    • BlogIcon vbdream 2008.12.10 12:10  댓글주소  수정/삭제

      음... 한술 더떠서 PE 헤더의 안쓰는 필드를 이용해서 코드를 넣는 등의 방법도 있을 수 있겠네요...ㅋㅋ;

      ※ p.s: 도스 프로그램에서 저거 키면 왠지 crash 될거같네요... ㅋㅋㅋ IMAGE_DOS_HEADER는 도스 실행시 초기 SS값이나 SP값, IP값 등을 저장하고 있으니...

    • BlogIcon jz 2008.12.10 17:35  댓글주소  수정/삭제

      네 코드랑 문자열이랑 import정보도 다 nt헤더(동시에 dos헤더)안에 쏙쏙!ㅋㅋ