일단 시작하기 앞서서 GCC와 GDB 설치가 필요하겠죠?

 

apt install GDB
apt install GCC

 

해당 코드를 작성을 해두었습니다

 

#include <stdio.h>

void a(char * name, int age){
	
	printf("%s %d\n",name,age);

}

int main(void){
	
	char name[10] = "shj";
	int age = 20;
	
	a(name, age);
	
	return 0;
}

 

이제 컴파일을 해야하는데 Gcc를 이용해서 컴파일을 하도록 하겠습니다.

 

sudo apt-get install GCC

 

 

정상적으로 설치가 된것을 확인 할 수 있습니다

여기서 fatal error가 나는 것이 정상입니다 아직 아무런 파일도 넣지 않았기 때문이죠

그래서 우리가 미리 만들어 두었던 코드를 컴파일을 해보겠습니다.

 

gcc cdecl.c

 

 

정상적으로 컴파일이 완료가 되면 a.out이라는 파일이 생성이 됩니다.

프로그램 이름 앞에 디렉토리 위치 정보인 ./를 추가해야

현재 디렉토리에 있는 명령어가 실행되는데, 여기서 마침표(.)는 현재 디렉토리를 의미하고,

슬래시(/)는 디렉토리를 구분하는 문자가 됩니다.

 

gdb a.out
disass main

 

gdb를 실행시키고 나서 해당 프로그램의 메인함수를 보기 위해서 disass main을 하였습니다.

그러면 아래와 같이 나오는데요 하나하나 살펴보겠습니다.

 

 

여기서 조금더 편하게 보기위해서 인텔문법으로 변경을 해주었습니다.

 

set disassembly-flavor intel

 

 

변경이 된 것을 확인 할 수 있습니다.

이번에는 gdb 설치와 실행을 해보았는데요 

이어서 다음 포스팅에는 분석을 진행하도록 하겠습니다

그럼 20000

+ Recent posts