ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • pwngdb-1
    dream hack/system hacking 2022. 8. 16. 16:31

    실습 예제

    //Name:debugee.c
    //Compile:gcc -o debugee debugee.c -no-pie

    #include <stdio.h>
    int main(){
            int sum = 0;
            int val1 =1;
            int val2 = 2;

            sum = val1 + val2;

            printf("1 + 2 = %d\\n", sum);

            return 0;
    }

    의 간단한 파일이다. 그 뒤 gdb debugee로 디버깅을 시작한다.

    시작화면은 위와 같고 start를 입력하면 아래와 같은 화면이 출력된다.

    위 코드 중 0x401050 (_start)의 0x401050은 프로그램의 진입점 주소임을 알려준다. 그 근거로 아래의 코드를 첨부한다.

    리눅스는 실행파일의 형식으로 ELF(Executable and linkable Format)으로 규정하고 있다. ELF는 크게 헤더와 여러 섹션들로 구성되어있고 ELF의 헤더 중에 진입점(Entry Point, EP)라는 필드가 있는데 운영체제는 ELF를 실행할 떄 진입점의 값부터 프로그램을 실행한다.

     

    헤더에는 실행에 필요한 여러 정보가 적혀있고, 섹션들에는 컴파일된 기계어 코드, 프로그램 문자열을 비롯한 여러 데이터가 포함되어 있다.

     

    위 사진과 같이 EP에는 0x401050이 적혀있고 우리가 (_start)의 값으로 0x401050이 적혀있던 것을 확인할 수 있다.

    이는 디버깅을 통해 프로그램의 시작점 위치를 알 수 있는 사실을 알려준다.

     

     

    'dream hack > system hacking' 카테고리의 다른 글

    리눅스 메모리 구성  (0) 2022.09.25
    pwngdb-2  (0) 2022.08.16
    Tool: gdb-1  (0) 2022.08.15
    GCC이용해서 컴파일 하기  (0) 2022.08.15
    lock 풀기  (1) 2022.08.15
Designed by Tistory.