728x90
Reverse Engineering - GDB 디버거 사용법 [리버싱 기초_01]
Operator(운영체제)
Linux(리눅스) - cpu(Intel)
기본코드 작성하기
GDB 디버깅 run and stop (실행과 멈춤)
~$ gdb
(gdb) disas main
(gdb) set disassembly-flavor intel
이 설정을 해주는 것은 가독성을 높이기 위함이다.
인텔 방식의 disassemgly 언어로 보여준다.
(gdb) b *main //main함수의 시작부분에 break point가 걸린다.
break 포인트를 생성한다.
b만 입력하고 tab을 치면 b로 시작하는 여러 명령어들을 볼 수 있다.
break입력해도 되고, b만 입력해도 된다.
만일 main함수의 8번째 라인에다 break point를 걸고 싶으면 b *main+8을 한다.
주소를 이용해서 break point를 생성할수 있다. b *0x00000000004005bd
(gdb) info b // 지금까지 break point가 걸린 위치를 모두 보여준다.
(gdb) delete 2 // break point 중에서 2번을 지운다.
그냥 delete 하면 모든 break point를 삭제 할 수 있다.
(gdb) run // 프로그램을 실행한다
(gdb) run test1234 // key인자가 필요할 경우
(gdb) cont // continue 를 다 입력해도 된다.
break point를 걸어둔뒤 run을 하면 preak point가 걸리는데 다시 run을 하게되면 break point부터 이어서 시작하는 것이 아니라 프로그램 처음부터 다시 시작하게된다. 이때 continue(cont)를 하게 되면 break point부터 실행한다.
0x00000000004005bd <+0>: push rbp
break point를 걸고 run을 하면 break point가 걸린 지점에 아래처럼 =>가 생긴다.
=> 0x00000000004005bd <+0>: push rbp
~$ ni //next instruction 의 약자 다음 명령어를 실행하라
명령어를 한줄씩 실행한다.
ni를 한 다음에 disas main을 해보면 =>가 다음줄울 가리키고 있음을 확인 할 수 있다.
GDB 디버깅 Information confirmation (정보 확인)
(gdb) info reg
모든 register 정보 확인
(gdb) info reg $rsp
rsp의 register 쟁보 확인
(gdb) x/t $rsp
이진수로 register rsp의 메모리 확인
(gdb) x/o $rsp
8진수로 register rsp의 메모리 확인
(gdb) x/o 0x00000000004005bd
8진수로 메모리주소로 메모리확인
(gdb) x/d $rsp
십진수로 register rsp의 메모리 확인
(gdb) x/u $rsp
언사인 십진수로 register rsp의 메모리 확인
(gdb) x/x $rsp
십육진수로 register rsp의 메모리 확인
(gdb) x/c $rsp
문자열로 register rsp의 메모리 확인 askii value같은 것을 확인
(gdb) x/f $rsp
부동소수점으로 register rsp의 메모리 확인
(gdb) x/s $rsp
문자열로 register rsp의 메모리 확인
(gdb) x/bx $rsp
1byte 단위로 메모리 확인
(gdb) x/hx $rsp
2byte 단위로 메모리 확인
(gdb) x/wx $rsp
4byte 단위로 메모리 확인
(gdb) x/gx $rsp
8byte 단위로 메모리 확인(64bit 환경)
(gdb) x/10gx $rsp
현재 명령어 이후로 8byte 단위로 10개의 메모리 확인(64bit 환경)
GDB 디버깅 Attach (실행중인 프로세스에 붙이기)
~$ ps
~$ gdb "filename" "pid"
프로그램을 중단하면서 attach됨
(gdb) attach
(gdb) detach
프로그램을 attach했으면 사용후 반드시 detach해줘야한다.
'my_lesson > _Reverse Engineering' 카테고리의 다른 글
Reverse Engineering - 어쎔블리어 Intel x86 JUMP quick reference (0) | 2018.11.22 |
---|
댓글