어제 문제풀다가 gdb로 심볼 복구가 안되는 바이너리를 디버깅 해야했었다...
그래서 드디어 아이다로 리눅스 ELF 파일 원격 디버깅을 해보았다..!
먼저 아이다 설치 파일 위치에 가보면 dbgsrv라는 폴더가 있다. 이름부터 디버거 서버 느낌이..
아무튼 거기서 자신이 디버깅하려는 파일이 있는 OS의 버전을 보고 복사!
일반적으로 설치했을 때의 경로는 C:\Program Files\IDA\dbgsrv이다.
이런식으로 있는데, 나는 우분투 64bit에서 디버깅을 할 것이므로 linux_server64를 복사했다.
그 이후는 간단하다. 이 복사한 파일을 자신이 사용하는 리눅스 머신에 올려놓으면 된다.
서버 실행 방법은 간단하다. 그냥 실행권한 주고 ./linux_server64 하면 끝!
다음은 IDA에서 설정해야하는 부분이다. 먼저 디버깅하고자 하는 파일을 연다.
상단에 Debuuger > Select debugger 메뉴에서 Remote Linux debugger를 체크해준다.
그러면 디버거 메뉴에 뭐가 많이 생기는데, 그중에서 Process options를 선택한다.
이렇게 설정해주면 된다! 포트번호도 리눅스에서 서버를 실행시킬 때 바꿔줄 수 있는데 그냥 사용해도 무관하다.
위 설정후 OK하고, 저 초록 화살표를 누르면 동적 디버깅을 진행할 수 있다!
실행하고나면 뭐 이런저런 알림창 나오는데 결국 내용은 파일 손상될 수도 있고.. 뭐 경로가 이상하다 어쩌구 하는 말들인데 그냥 다 Yes 하고 넘어가면 된다
그러고 나면 이런식으로 디버깅을 진행할 수 있다! gdb보다 훨씬 보기 좋아... 진작에 이렇게 할걸
서버를 실행시킨 쪽에서는 이런식으로 출력됨!!!
만약 프로그램 중간에 입력을 받는 부분이 있으면 이 서버를 실행시킨 곳에서 입력을 진행해주면 된다!
출력도 이곳에서 확인 가능하다.
디버깅 단축키가 x64dbg랑 똑같아서 하는데는 문제 없었지만.... 결국 이 문제를 못풀었다 ㅠㅠ
**** 내가 한 실수들
Process options 설정할 때 Drectory에 linux_server를 넣은 "디렉토리"명만 적어야한다!!
/home/dir 디렉토리 안에 linux_server가 있다면 /home/dir/만 적어야한다!!! 나는 linux_server까지 적어서 계속 오류가 났었다
'잡지식' 카테고리의 다른 글
[Qt] Qt kali에서 Android build (with JDK, NDK, SDK ) (0) | 2020.03.08 |
---|---|
[QT] QT install in kali (0) | 2020.03.07 |
[Kali Linux 2020.1] ifconfig not found (0) | 2020.02.05 |
[gcc 오류 해결] bits/libc-header-start.h: No such file or directory (0) | 2020.02.03 |
gdb 디스어셈블리 문법 Intel로 바꾸기 (0) | 2020.02.02 |