Ubuntu 어셈블리 분석환경조성 및 메모
VI
설명
우분투를 설치하면 기본으로 딸려오는 파일 에디터임.
문맥에 따른 색깔구분 같은 추가 기능이 없으며 이건 VIM 을 쓰면 가능함.
사용
- 파일 생성 및 열기 =>
vi test.c
- 현재 커서가 위치한 곳으로 입력모드 전환 =>
i
- 명령모드 전환 =>
esc
- 저장 및 나가기 =>
:wq
- 현재 커서에서 붙여넣기 =>
p [복사내용]
- 여러줄 선택 =>
shift + v + 화살표
G
=> 이하 전체 선택D
=> 지우기
GCC
gcc
를 통해서 위에서 생성한 텍스트 파일을 컴파일 할 수 있음.
만약 설치되지 않았다면 sudo apt install gcc
를 쓰라고 메시지가 나옴
- 여기서 문제가 일어났다면
sudo apt update
로apt
를 업데이트 후 진행.
컴파일은 gcc -o [실행파일명] [소스파일명]
이 기본적인 형태로 수많은 옵션이 있음
-m32
는 64비트 환경에서 32비트 모드로 컴파일함.- 이때
sudo apt-get install gcc-multilib
가 추가로 설치되어야 함.
- 이때
-fno-stack-protector
로 SSP 기법 전 상태를 볼 수 있음.-fno-pic
,-no-pie
-g
를 쓰면 아래에서 볼 GDB 에게 필요한 정보를 함께 바이너리에 넣음- 정리된 블로그
컴파일이 되었다면 ./[실행파일명]
으로 실행시켜보자.
GDB
binary 파일을 분석하는 도구로 많은 기능이 있지만 지금 볼 것은 어셈블리 코드임.
gdb -q [파일이름]
으로 분석을 실행할 수 있음.
- 포커스가 바뀔텐데
info func
을 호출하면 함수를 확인할 수 있음. pd [함수이름]
을 하면 해당함수의 어셈블리를 확인할 수 있음.q
로 종료
댓글남기기