카테고리 없음

gdb 팁

진모씨 2014. 1. 13. 13:12

개인적으로 쓰곤 하는 gdb 팁들입니다.


브릭포인트 설정

b 함수

이렇게도 가능하고

b *함수+주소

이런 식으로 함수의 상대 주소로도 가능해요.

b *주소

이렇게도 가능해요.

물론

b *(연산)

이렇게 연산에 주소+주소 이렇게도 가능하죠.


브릭포인트 해제

d 브릭포인트번호

d

d 만 입력할 경우 모든 브릭포인트를 지울 지 확인하는 창이 나와요.

y 누르면 다 삭제될 거에요.


함수 정의

define 함수이름

-> 하면 명령어들을 치고 엔터를 치라고 나온다. 끝은 end 라고 치면 끝난다.

set $edx=$arg0

end


이러면

함수이름 1

하면 $edx가 1이 된다.


조건 반대로 하기(32비트, 64비트)

그냥 쉬워요. 만약 ZF 를 바꾸고 싶다면

set $eflags=$eflags ^ 64

를 하면 되거든요.

위의 표대로 하면 될 거에요.

zf는 6비트니까 2^6 == 64 여서 저렇게 해주는데, 저러면 비트가 뒤집히죠.

jnz, jz 같은곳에서 강제로 점프시키고 싶을때 브릭포인트 걸고 저걸 쓰곤 해요.


x/x 바이트 단위 설정

x/xb, x/xw, x/xd 이런식으로 얼마만큼씩 뜨게 할 지 설정할 수 있어요.


이건 x/s 한 후 x/x가 1바이트 단위로 설정되었을 때 보통 하는데, x/x 뒤에 한글자를 위에 나온 대로 덧붙여주시면 다시 원상복구시킬 수 있어요.