Mac book air(M1)에서 디버거를 돌리고 싶은 마음에 올 초부터 여태껏 여러 노력을 해봤다...
이 대장정의 길을 누군가는 밟지 않기를 바라면서 기록해둔다.
m1이라서 불가능. 대체제인 lldb가 있다고 했다. 난 gdb가 편하기도 하고 pwndbg를 쓰고 싶어서 다음 단계로 넘어갔다.(M1이 arm 계열이기도 하고.)
그럭저럭 사용할만 해서 괜찮았다. 윈도우를 서버로 해서 직관적이라 금방 적응이 되기도 했고, 몇달을 그렇게 썼다. 하지만 파일을 옮기고, 화면 전환하기 귀찮아서 좀 더 낫은 방법이 없을까해서 찾아봤다.
Dockerfile을 통해서 image를 올리는 방법을 찾았을 때까지는 일이 잘 풀렸다. 문제는 gdb-peda/pwndbg를 실행했을 때 생겼다. gdb 역시 실행이 잘 되었지만,만, run을 돌리자 ptrace가 불가능하다는 문구가 뜨면서 돌아가지 않았다. container을 빌드할 때 옵션 중 --priviliged를 넣지 않아서 문제가 생겼다고 구글링 결과로 나왔지만, 어째서인지 온갖 방법을 써도 풀리지 않았다. 아마 노트북이 M1이라서 버그가 난게 아닐까 생각이 든다.
4.1 우선 남는 노트북을 통해서 ubuntu server을 설치하고 통신을 하려고 했다. 근데 해당 노트북(Lenovo Thinkpad3)이 무선랜쪽에 문제가 있는지 .yaml 파일을 제대로 작성했지만 그래도 WIFI를 잡지 못했다. 무엇보다 유선랜이 없는 모델이라 불타는 금요일에 스트레스를 많이 받았다. 결국 자기 직전에 포기했다.
4.2 다음 날, 집에 남는 데스크탑이 남아있는 것(연식이 대충 10년은 넘는 데스크탑)을 확인하고 포맷을 한 다음에 ubuntu server을 설치했다. 유선랜이 있으니 자동으로 잡혀, 네트워크쪽으로 설정해줄 필요 없이 맘 편하게 설치할 수 있었다. 처음부터 그렇게 했어야했는데...
툴 설치는 이전에 작성했던 Dockerfile과 비슷하게 설정을 했다. 차이점이 있다면 pwndbg를 하나 더 설치했다는 점.
~/.gdbinit에 접근해 peda와 pwndbg 둘 중 뭘 사용할지 설정할 수 있다.
vi ~/.gdbinit
사용하고 싶은 디버거 앞에 주석처리를 빼면 된다.
잘 돌아가는 것을 확인할 수 있다.
오늘의 결론을 말하자면, amd64 Linux를 사용하고 싶다면 집에 남는 컴퓨터로 서버를 구축하는게 마음이 편하다는 것이다. 다음에 시간이 된다면 ssh설정 방법이나 사용법도 올리도록 하겠다.