DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Tool: gdb디버거프로그램을 개발할 때는 일반적으로 코드의 논리구조를 신중하게 설계하고, 코드를 작성해 나간다. 그런데 개발 초기에 아무리 신중하게 설계해도, 코드의 규모가 커지다 보면 실수가 발생하기 마련이다. 컴퓨터 과학에서는 이렇게 실수로 발생한 프로그램의 결함을 버그(bug)라고 한다. 개발자들은 농담처럼 개발에 투자한 시간만큼을 버그를 잡는 데 사용한다고 말한다. 그 정도로 이미 완성된 코드에서 버그를 찾는 것은 어렵다. 그래서 이런 어려움을 해소하고자 디버거(Debugger)라는 도구가 개발되었다. 디버거는 문자 그대로 버그를 없애기 위해 사용하는 도구이다. 프로그램을 어셈블리 코드 단위로 실행하면서, 실행 결..