본문 바로가기
리버스 코드 엔지니어링

[리버스 엔지니어링] OllyDbg 간단한 사용법

by 손정빈 2018. 10. 30.
728x90
반응형

디버깅 툴을 사용하기 전에 먼저 알아야 내용이 있습니다.

 

디버그를 통해 나오는 어셈블리 언어는 CPU 종속되어 있습니다. 일반 PC에서 많이 사용되는 intel x86 계열 CPU 모바일 제품에서 많이 사용되는 ARM 계열의 CPU 서로 어셈블리 명령어의 형태가 다릅니다.

 


 

사진은 OllyDBG 기본 화면입니다.

OllyDbg 무료에, 직관적인 인터페이스와 확장 기능을 통해 많은 사랑을 받고 있는 디버거 입니다.

 

화면에서 나오는 Code Window/Register Window/Dump Window/Stack Window 존재하는데

 

Code Window

  • 기본적으로 디스어셈블리 코드를 표시하여 각종 커멘트나 라벨을 보여주며, 코드를 분석하여 Loop, Jump 위치 등의 정보를 표시합니다.

Register Window

  • CPU register 값은 실시간으로 표시하며 특정 register들은 수정도 가능합니다.

Dump Window

  • 프로세스에서 원하는 memory 주소 위치를 hex ascii/유니코드 값으로 표시하고 수정도 가능합니다.

Stack Window

  • ESP register 가리키는 프로세스 Stack 메모리를 실시간으로 표시하고 수정도 가능합니다.


 

 


사진은 OllyDbg 명령어입니다. 참고하시면 좋을 같습니다.

 

 

리버싱 핵심 원리에서는 원하는 코드를 빨리 찾아내는 4가지 방법에 대해서 설명하고 있습니다.

  1. 코드 실행 방법
  • 프로그램의 기능이 명확한 경우에 명령어를 하나하나 실행하면서 원하는 위치를 찾는 방법
    • 방법의 경우 코드의 크기가 작고 기능이 명확한 경우에 사용 있습니다.
  1. 문자열 검색 방법
  • 프로그램에서 사용되는 문자열을 통해 검색하여 찾는 방법
  • OllyDBG에서는 프로그램에서 사용되는 문자열에 대해서 분석하여 정리를 해놓습니다.
    이를
    이용하여 검색하는 방법이지만 기본적으로 코드와 데이터 영역이 서로 다름을 알고 있어야 합니다.
  1. API 검색 방법
  • 호출코드에 BP ( 마우스 우측 메뉴 - Search for - All intermodular calls )
    • 또한 OllyDbg에서 분석하여 확인한 API 목록을 통해 이용합니다.
    • API 목록에 대해서 분석하는 원리를 알기 위해서는 PE File Format 대해서 알아야 합니다.
  • API코드에 직접 BP ( 마우스 우측 메뉴 - Search for - Name in al modules )
    • 파일의 구조를 바꿔버리는 경우 OllyDbg API 대해서 찾을 수가 없습니다.
    • 직접적으로 View - Memory 선택하여 User32 로딩된 메모리 영역을 지정하여 다시 검색하면 됩니다.


반응형

댓글