따로 ida에서 제공하는 dbgsrv에서 쓸만한게 없다면 gdbserver를 올려서 디버깅 해야한다.
서버에 gdbserver를 static으로 서버 환경에 맞게 컴파일하거나 이미 컴파일 된 파일을 다운 받아서 올리고
"sudo ./gdbserver 127.0.0.1:port ./binary" 이렇게 실행하면 된다. port부분에 1337, 7777처럼 포트 번호를 넣으면 된다. (해당 포트포워딩은 외부로 해 둬야 한다.)
가끔씩 sudo를 안해서 ida에서 오류가 날 때가 있으니 해주는게 좋다.
그리고 ida로 debugger를 Remote GDB debbuger로 설정하고 Debugger - Process Options에서 Application, Input file을 서버에서의 파일 위치로 잡고, Parameters는 인자, Hostname에 서버 주소를, Port에 아까 열은 포트를 입력하면 된다.
그러면 디버깅을 할 수 있다.
그런데 가끔씩
이런 에러가 날 때가 있다. ("Single-stepping a thread failed; possibly stub does not support single-stepping Try disabling the single-step functionality in debugger-specific options.")
이 때는 Debugger - Debugger Options - Set specific options - Use stepping support 옵션에 체크를 해제해주면 정상적으로 디버깅 할 수 있다.
'Reversing > Debugging Tech' 카테고리의 다른 글
OS 동적 디버깅(vmware) (1) | 2016.06.22 |
---|---|
16bit DOS Debugging (0) | 2016.02.03 |
IDA Linux Remote Debugging (0) | 2015.09.19 |