Training 8에서는 새로운 파일을 만들고 컴파일하고 실행하는 법을 배운다.
위 과정들은 실제로 해킹을 할 때 빠짐없이 사용되는 방법이니 잘 익혀야 한다.
파일을 만드는 두 가지 종류가 있다. 일반 텍스트 파일과 프로그램 소스 파일이다.
일반 텍스트 파일은 말 그대로 글자로만 이루어진 파일이다. 예를 들어 "README.TXT."가 있다. 이런 일반 텍스트 파일은 cat 명령어를 사용하여 내용을 출력한다고 배웠다.
프로그램 소스 파일이란 컴퓨터 언어로 입력한 파일을 말하며 이것 역시 텍스트 파일이긴 하지만 cat을 사용하여 내용을 보는 것이 아니고 "컴파일"이란 과정을 거쳐 실행할 수 있도록 만든 후 사용한다.
텍스트 파일
생성
- 쉘 프롬프트 상태에서 cat > 파일 이름.txt를 입력한다.
- 원하는 내용을 쓰고 Ctrl + d를 눌러 저장한다.
1번에서 나온 "cat > 파일 이름.txt"를 자세히 보자. 여기서 중요한 건 '>'이 문자다. 이 문자는 Redirection(리다이렉션)이라고 읽고 방향 전환이란 뜻이다.
리눅스에선 보통 실행 결과를 모니터로 출력한다. 예를 들어 cat를 입력한 후 아무 글자를 입력하면 그대로 모니터에 출력한다.
'>' 리다이렉션을 사용하여 입력 결과를 모니터가 아닌 파일로 보내는 것이다. 즉, 출력의 방향을 전환한 것이다.
간단하게 해석하자면 "왼쪽에서 출력되는 것을 받아 오른쪽의 입력으로 보내겠다."가 된다.
위 텍스트 파일 생성을 예로 들자면 cat 명령을 사용하여 입력하는 모든 글자를 모아서 파일 이름.txt로 보내라는 것이다.
리눅스에서 Ctrl+d는 간단하게 설명하자면 '이제 그만'이라는 의미다.
만약 파일 이름.txt가 있을 때 위와 같이 cat > 파일 이름.txt를 입력하면 기존의 내용은 사라지고 새로운 내용으로 파일이 다시 만들어진다. 이 점을 조심해야 한다.
기존의 내용은 보존하면서 새로운 내용을 쓰려면 이와같이 "cat >> 파일 이름.txt"처럼 '>' 리다이렉션을 두 번 사용하면 기존 내용 뒤에 새로운 내용이 추가된다.
프로그램 소스
소스를 만드는 방법은 텍스트를 만드는 방법과 같다. 하지만 컴퓨터가 알아들을 수 있는 C언어로 작성한다는 차이점이 있다.
생성
"cat > 소스 이름.c"로 소스 파일을 만든다.
컴파일
"gcc -o 프로그램 이름 소스 파일 이름"으로 컴파일한다.
컴파일을 예를 들자면 생성에서 "cat > test.c"를 만들었을 때 컴파일에서는 "gcc -o test.ext test.c"를 입력한다.
test.c 소스 파일을 test.exe로 컴파일하는 것이다.
실행
리눅스에서는 그 파일이 있는 절대 경로를 모두 입력해야만 실행된다.
절대 경로란 최상위 디렉터리인 루트( / )에서부터 시작되는 경로를 말한다.
절대 경로를 보는 방법은 Training 1에서 배웠다 "pwd"
경로가 "/tistory/En_Geon"이라면 "/tistory/En_Geon/test.exe"를 입력해야 실행이 되는 것이다.
프로그램을 간단하게 실행할 방법이 있다.
리눅스에서는 '.'이 현재 디렉터리를 의미하는 것을 배웠을 것이다. 따라서 절대 경로를 쓰지 않고 '.'을 사용하면 간단하게 프로그램을 실행시킬 수 있다.
"./test.exe"를 입력하면 된다.
'System Hacking > 해커스쿨 F.T.Z Training' 카테고리의 다른 글
해커스쿨 F.T.Z Training 10 (0) | 2020.02.04 |
---|---|
해커스쿨 F.T.Z Training 9 (0) | 2020.02.04 |
해커스쿨 F.T.Z Training 7 (0) | 2020.02.03 |
해커스쿨 F.T.Z Training 6 (0) | 2020.02.03 |
해커스쿨 F.T.Z Training 5 (0) | 2020.02.02 |
댓글