본문 바로가기
Reverse Engineering/gdb

gdb 명령어, 리틀엔디언 방식

by manchesterandthecity 2020. 10. 7.

q

: gdb 종료

 

r(run)

: 실행

 

 

주의)

b main+7                       이렇게 쓰면 gdb에서 'main+7' 자체를 함수로 인식해버린다. 저러한 함수는 없기에 제대로 실행 안됨.

b *main+7                     그래서 이렇게 main 앞에 *를 써주면, 나는 main에 break point를 두고 싶은데 main 함수에서 +7번째에 있는 부분에 break point를 두고싶다. 라는 의미로 적용되어 원하는 대로 사용 가능하다.

 

 

 

 

 

 

gdb 는 리틀 엔디언 방식.

 

x/x 사용 예)

 

x/bx   $esp   1바이트(byte) 단위로 출력하겠다.

 

x/4bx   $esp   1바이트(byte) 단위로 4번째 까지 출력하겠다.

 

x/wx   $esp   1워드(word) 단위로 출력하겠다. 즉, 4바이트 단위로 출력하겠다. (1워드 = 4바이트)

 

x/4wx   $esp   1워드(word) 단위로  4번째 까지 출력하겠다. 즉, 4바이트 단위로  4번째 까지 출력하겠다.

(1워드 = 4바이트)

 

( 사용 후 마지막으로 출력한 방식으로 계속 출력되므로 ( x/x 출력 할 때.)  다시 본래의 출력 방식인 4바이트 단위 출력으로 돌리려면 x/4wx 로 출력을 다시 해주면 된다. ) 

 

 

gdb 는 리틀 엔디언 방식이어서,

0x12345678이 0x78  0x56  0x34  0x12  순서로 뒤에 값 부터 출력 되는 것을 볼 수 있다.

'Reverse Engineering > gdb' 카테고리의 다른 글

lea, and, or, xor 명령어  (0) 2020.10.10
sub, add 명령어  (0) 2020.10.10
gdb - Segmentation Fault, 대괄호 [ ]  (0) 2020.10.07
gdb 실행, 명령어  (0) 2020.10.07
gdb at&t 방식을 intel 방식으로 바꾸기  (0) 2020.10.07

댓글