업무 특성 상, 실행파일(EXE, DLL 등...)의 디스어셈블 코드를 많이 보게 됩니다.

이번에 희안한(?) 걸 보게되서 간단히 포스팅 해봅니다...

[그림 01]. Sample #1



[그림 02]. Sample #2



어느 두 파일의 디스어셈블 코드인데요~

박스 친 부분의 명령어와 헥사 코드를 살펴보시기 바랍니다.

분명히 같은 어셈 명령어인데~ 헥사코드가 다릅니다...;;
( 예전부터 쭉 이래왔겠지만... 인지한 건 이번이 처음인지라...;;; )


지금까지는 당연한 것처럼~

스택 프레임이 형성된 함수의 시작코드는...

" 55, 8B, EC (PUSH EBP, MOV EBP, ESP) " 라고 생각해왔는데...

항상! 그렇지는 않은 모양입니다..;;;

틈나면 인텔 명령어 코드 한 번 뒤져봐야겠네요... ^^;;;;



YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. BlogIcon 6l4ck3y3 2011.02.13 22:13  댓글주소  수정/삭제  댓글쓰기

    opcode 분석해보니까 89와 8B는 src와 dest의 순서가 반대인 같은 명령이네요. 어셈블리 문법으로 보며... 89는 AT&T문법과 같고 8B는 INTEL문법과 순서가 같아요. 컴파일러가 왜 저렇게 다르게 번역했는지 신기하네요.

    • BlogIcon 6l4ck3y3 2011.02.13 22:18  댓글주소  수정/삭제

      조금 더 정확하게 비교하면 89와 8B는 src와 dest 중 어디에서 메모리 참조하냐에 따라 다른 명령이지만, 양쪽 다 레지스터일 경우에는 단지 순서가 반대인 명령이네요...

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

      : ) 호오.. 89 와 8B 가 같은 명령이었군요;;
      참고로 둘다 Themida 로 패킹된 파일이었습니다..ㅋ
      PEiD 시그니처 등록하려고 보다보니~ 저렇게 되어있더라는.. : )

    • BlogIcon 6l4ck3y3 2011.03.01 03:02  댓글주소  수정/삭제

      Themida 요?
      요즘 Themida 분석이 다시 급땡겨지네요 ㅋ

      좋은 글 잘 읽었습니다.
      덕분에 좋은 공부 됐어요 ^^