Ubuntu 어셈블리 분석환경조성 및 메모

4 분 소요

VI

설명

우분투를 설치하면 기본으로 딸려오는 파일 에디터임.

문맥에 따른 색깔구분 같은 추가 기능이 없으며 이건 VIM 을 쓰면 가능함.

사용

  • 파일 생성 및 열기 => vi test.c
  • 현재 커서가 위치한 곳으로 입력모드 전환 => i
  • 명령모드 전환 => esc
  • 저장 및 나가기 => :wq
  • 현재 커서에서 붙여넣기 => p [복사내용]
  • 여러줄 선택 => shift + v + 화살표
    • G => 이하 전체 선택
    • D => 지우기

GCC

gcc 를 통해서 위에서 생성한 텍스트 파일을 컴파일 할 수 있음.

만약 설치되지 않았다면 sudo apt install gcc 를 쓰라고 메시지가 나옴

  • 여기서 문제가 일어났다면 sudo apt updateapt 를 업데이트 후 진행.

컴파일은 gcc -o [실행파일명] [소스파일명] 이 기본적인 형태로 수많은 옵션이 있음

  • -m32 는 64비트 환경에서 32비트 모드로 컴파일함.
    • 이때 sudo apt-get install gcc-multilib 가 추가로 설치되어야 함.
  • -fno-stack-protectorSSP 기법 전 상태를 볼 수 있음.
  • -fno-pic, -no-pie
  • -g 를 쓰면 아래에서 볼 GDB 에게 필요한 정보를 함께 바이너리에 넣음
  • 정리된 블로그

컴파일이 되었다면 ./[실행파일명] 으로 실행시켜보자.

GDB

binary 파일을 분석하는 도구로 많은 기능이 있지만 지금 볼 것은 어셈블리 코드임.

gdb -q [파일이름] 으로 분석을 실행할 수 있음.

  • 포커스가 바뀔텐데 info func 을 호출하면 함수를 확인할 수 있음.
  • pd [함수이름] 을 하면 해당함수의 어셈블리를 확인할 수 있음.
  • q 로 종료

즐겨찾기

x86-64 ISA 정리된 블로그

Cmp 및 Jump 명령어 정리

x86-64 Register 정리

Linux SystemCall

댓글남기기