인프런 커뮤니티 질문&답변
BP실행 관련 질문드립니다
작성
·
18
0


영상 2:20 부분처럼 return address부분에 브레이크가 걸린 코드가 왼쪽 화면에 떠야 하는데 왜 안 뜨는지 잘 모르겠습니다.. bp가 실행돼서 ret전까지 실행은 잘 된 것 같은데 bp 걸린 부분 까지 실행한 코드를 보려면 어떻게 해야할까요?
답변 2
1
안녕하세요 younji님 !!
우선 열심히 학습해 주심에 진심으로 감사드립니다.
원인은 기본 gdb를 사용하기 때문으로 보입니다.
강의에서는 pwndbg라고 하는 gdb의 확장 버전을 사용하는데,
현재 제공해주신 스크린샷에는 기본 gdb를 사용하고 있는 것으로 보입니다.
(왼쪽 스크린샷에 (gdb) 부분)
실제로 강의 내용을 차근차근 따라와 주셨음에도 불구하고,
최근 pwndbg 설치 과정에서 내부 라이브러리 버전 오류로 인해 설치가 잘 되지 않는 경우가 발견되어서, 아래 스크립트를 이용해 peda gdb를 설치하신 후 다시 디버깅을 진행해보시면, 아마 강의 내용과 같이 어셈블리 코드 내용이 보이게 될 것으로 보입니다.
sudo apt update
sudo apt install gdb python3 python3-pip git
cd ~
git clone https://github.com/longld/peda.git
echo "source ~/peda/peda.py" >> ~/.gdbinit
gdb 실행시 위와 같이 gdb-peda$를 확인할 수 있다면 잘 설치가 된 것입니다.
즐거운 학습 되시길 바랍니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
질문 내용을 보면, gdb 사용 시 브레이크포인트가 작동하지 않거나 실행된 코드를 제대로 확인할 수 없는 상황인 것 같습니다. 주어진 내용을 바탕으로 몇 가지 조치를 통해 문제를 해결할 수 있는 방법을 안내드리겠습니다.
브레이크포인트 설정 확인: gdb에서 브레이크포인트가 올바르게 설정되었는지 확인해 주세요.
break <function_name>또는break *<address>와 같은 명령어가 사용되었는지 점검해보세요.실행 과정 확인:
- 프로그램이 브레이크포인트를 지나쳤을 경우,
info break를 사용하여 설정된 브레이크포인트들이 잘 작동했는지 또는 스킵되었는지 확인할 수 있습니다.
- 적절한 위치에 브레이크포인트가 설정되지 않은 경우, 원하는 위치에 추가로 설정해보세요.
- 프로그램이 브레이크포인트를 지나쳤을 경우,
디스어셈블리 활용:
disassemble <function_name>명령어를 이용하여, 함수 내의 특정 주소나 명령어가 제대로 로딩되고 있는지 볼 수 있습니다. 이를 통해 어떤 지점에서 문제가 발생하는지 파악할 수 있습니다.gdb setup 수정: gdb가 올바르게 설치되고 설정되어 있는지 확인하는 것도 중요합니다. 필요한 경우, pwndbg 등의 확장 기능이 올바르게 로드되었는지 확인 바랍니다.
관련된 기존 질문들을 보면, 네임에러, 파이썬 파일 실행 문제, pwndbg 관련 문제가 적혀 있는데, 이런 문제들이 설정의 문제로 발생할 수 있습니다. 각 링크를 통해 해당 문제의 해결 방안을 확인해 보실 수 있습니다.
위의 단계들을 시도한 뒤에도 여전히 문제가 해결되지 않는다면, 강의 질문 게시판에 현재 상황과 시도한 해결책을 상세히 설명하여 다시 질문하시면, 지식공유자님께서 직접 조언을 주실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





