리눅스 리버싱 관련 명령어
- apt-get
리눅스에서 사용하는 패키지 관리 명령어이다.
apt-get update ← 모든 패키지 업데이트
apt-get upgrade ← 모든 패키지 업그레이드
apt-get install <패키지명> ← 패지키 설치
이외에도 많은 명령어가 있다. 주로 쓰이는건 이 정도.
- readelf -h <실행파일명>
정적분석
- gdb 실행파일명
gdb를 통해 해당 실행파일을 디버깅할 수 있음.
- gdb 실행파일명 PID
ps를 통해 PID를 확인 후 현재 실행되고 있는 실행파일에 디버깅을 할 수 있음.
gdb로 프로그램을 실행한 후
- run
프로그램 실행
- set disassembly-flavor intel
intel CPU에서 사용하는 형식으로 어셈블리어를 볼 수 있음.
- disas <함수(main 등)>
disas함수로 함수의 어셈블리어를 확인할 수 있음.
disas + TAB키를 활용해서 해당 프로세스의 함수를 확인할 수 있음.
- b 또는 break <주소> 또는 <함수+α> 또는 숫자
run 명령어로 프로그램을 실행하던 중 브레이크 포인트를 만나면 해당 주소에서 멈춤.
b 숫자를 사용하는 경우 rip에서 숫자만큼 더한값에 브레이크 포인트를 설정함. 만약 -10을 하면 rip에서 -10을 한 주소에 브레이크 포인트를 설정함.
- delete (번호)
브레이크포인트를 지울 때 사용함. delete만 사용할 경우 모든 브레이크포인트를 지울 수 있음.
info b를 통해 브레이크포인트를 확인 후 지우고싶은 브레이크포인트 번호를 쓰면 해당 브레이크 포인트만 지울 수 있음.
- info reg
모든 레지스터의 값을 확인 가능
- info reg $rax
rax 레지스터의 값을 확인 가능. rax 외에 다른 레지스터 값들도 확인 가능함.
- info b
현재 브레이크 포인트를 확인 가능
- cont 또는 continue
run을 통해 실행시킨 프로그램이 브레이크포인트에 의해 멈췄을 때 cont를 통해 계속 실행할 수 있음.
- ni(next instruction)
명령어를 한 줄만 실행시킴.
- x명령어
x/t $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 2진수로 보여줌.
x/o $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 8진수로 보여줌.
x/d $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 10진수로 보여줌.
x/u $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 10진수(unsigned)로 보여줌.
x/x $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 16진수로 보여줌.
x/c $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 char형식으로 확인하기.
x/f $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 부동 소수점으로 보여줌.
x/s $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 문자열로 보여줌,
x/bx $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 16진수 형식으로 1바이트를 보여줌.
x/hx $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 16진수 형식으로 2바이트를 보여줌.
x/wx $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 16진수 형식으로 4바이트를 보여줌.
x/gx $rax 또는 함수주소
rax 또는 함수주소에 있는 값을 16진수 형식으로 8바이트를 보여줌.
x/숫자gx $rax
$rax의 값을 16진수 형식으로 숫자만큼 보여줌.
- detach
프로세스를 디버거에서 분리시킴.
참고 했던 사이트