[클라우드 바우처] 80% 할인된 금액으로 드림핵 엔터프라이즈를 도입해 보세요. 자세히 알아보기
EntryPoint 차이 발생

start 명령어를 사용하면 0x4004eb로 나오면서 readelf와 차이가 있는데 왜 그런것인가요? 그리고 disas 부분에서 debugee.c파일에는 main함수 하나만 존재하므로 <start>가 아닌 <main>이 되어야 하는게 아닌가요?

#시스템해킹 #툴 #gdb
작성자 정보
답변 1
avatar
bincat
Closed Beta Tester
  1. gdb의 start 명령을 하면 프로그램이 최초로 실행하는 instruction에서 멈추게 됩니다. 강의에서는 그게 _start 함수가 되는 것이고요!
    사용자가 지정한 파일은 0x400000 에 로드된다고 생각하시면 됩니다. 대신 0x400000 처음부터 코드인 것이 아니라, 이 앞에는 이 파일이 어떤 속성을 가지고 있는지 설명하기 위한 데이터가 들어있는 것이고, 실질적인 코드는 0x400000 부터입니다.

  2. 소스코드에는 없지만, 컴파일 과정에서 _start 함수가 자동적으로 추가됩니다. 이 부분이 왜 필요하고, 추가 되어서 어떤식으로 사용되는지는 좀 더 나중에 공부하셔도 괜찮습니다! _start 함수의 존재만 기억하시면 충분합니다!!

2022.03.29. 11:26
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기