완료됨
gdb에서 b *main 명령어를 IDA에서도 가능한가요? (ida동적 디버깅 메인함수에 breakpoint 어떻게 거나요?)

gdb이든, IDA이든 직접 프로세스를 디버그 할 때는 처음부터 중단점을 설정 할 수 있으니 상관없습니다.
하지만 프로세스를 실행시키고, attach해서 중단점을 설정 하는것을 잘 모르겠습니다.
Screenshot from 2022-02-06 22-42-06.png
현재 워게임 문제를 풀다가 pwn을 사용하면 시작부터 프로세스를 디버그 할 수 없으니 attach해서 디버그 합니다.

  1. 파이썬 코드를 실행시킵니다.
    Screenshot from 2022-02-06 22-50-07.png
  2. pid를 알아내 gdb로 attach합니다. 그리고 b *main+42 쳐서 중단점을 설정합니다.
    Screenshot from 2022-02-06 22-54-35.png
  3. gdb continue하고 파이썬 실행시키는 터미널에 엔터를 치면, gdb가 중단점에 걸립니다.
    Screenshot from 2022-02-06 23-01-47.png
  4. 스택을 관찰할 수 있습니다.
    Screenshot from 2022-02-06 23-01-47.png

하지만 gdb는 그래픽적으로 불편하니, IDA로 해보려고 합니다.

  1. 파이썬 코드를 실행시킵니다.
  2. IDA-Debugger-attach-Local Linux Debugger로 프로세스를 attach합니다.
    이제 main함수 부분에 중단점을 걸어야 하는데, main함수가 어디에 있는지 모르겠습니다.
    pop ebp pop ebx같은 어느 부분인지 알 수 없는 명령어가 보이며, IDA-View-Open Subviews-Functions로 살펴봐도 아무런 함수가 없습니다.
    Screenshot from 2022-02-06 23-13-18.png
    Screenshot from 2022-02-06 23-32-18.png

ida로 동적 디버깅 할 때에 main함수에 breakpoint를 어떻게 설정하나요?

#assembly #gdb #ida #debugging #breakpoint
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
5unkn0wn
강의 수강: 50

여러가지 방법이 있겠지만 리눅스 내에서 maps 파일을 이용해 text 섹션의 주소를 얻어오고, 브레이크포인트를 걸 지점의 offset을 더해서 찾을 수 있을 것 같습니다.

2022.02.16. 10:46