-
์ปดํ์ผ ๊ณผ์ (C์ธ์ด) : ์ ์ฒ๋ฆฌ, ์ปดํ์ผ, ์ด์ ๋ธ, ๋งํฌSECURITY/REVERSING 2020. 7. 20. 00:12
์ปดํ์ผ ๊ณผ์
1) ์ ์ฒ๋ฆฌ - hello.c -> hello.i
: ์ ์ฒ๋ฆฌ๊ธฐ (Preprocessor) ๋ก ์ปดํ์ผ ์ ์ ์ฝ๋๋ฅผ ์ ์ ํ ์ํ๋ก ์ค๋นํ๊ฑฐ๋ ์ฒ๋ฆฌํ๋ ์ผ
์ ์ฒ๋ฆฌ๊ธฐ ๊ตฌ๋ฌธ: # ์ผ๋ก ์์ํ๋ ๊ตฌ๋ฌธ
ex. #include <stdio.h>
#define STD 10
์ด์ ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ ๊ตฌ๋ฌธ์ผ๋ก ํ์ํ ํค๋ํ์ผ์ ๋ถ๋ฌ์ค๊ฑฐ๋,
๊ธฐํธ ์์๋ฅผ ์ ์ํด์ ์ฝ๋ ์์ผ๋ก ํ์ํ ๋ด์ฉ์ ๋จผ์ ์ฑ์์ฃผ๋ ์ญํ ์ด๋ค.
์์ธํ ์ดํด๋ณด๋ฉด,
์ ์ฒ๋ฆฌ๊ธฐ๋ #include ๊ตฌ๋ฌธ์ ๋ง๋๋ฉด ํด๋นํ๋ ํค๋ ํ์ผ์ ์ฐพ์ ๊ทธ ๋ด์ฉ์ ์์ฐจ์ ์ผ๋ก ์ฝ์ ํ๋ค.
๊ทธ๋ฆฌ๊ณ #define ๋ถ๋ถ์ ์ฌ๋ณผ ํ ์ด๋ธ์ ์ ์ฅํ๊ณ , ์ฌ๋ณผ ํ ์ด๋ธ์ ๋ค์ด ์๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ ๋ด์ฉ์ ๋ง๋๋ฉด ํด๋น ๋ด์ฉ์ผ๋ก ์นํํ๋ค. (๋งคํฌ๋ก ์นํ ์์ . #ifdef ์ ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ ๊ตฌ๋ฌธ๋ ์ฒ๋ฆฌ๋จ)
2) ์ปดํ์ผ - hello.i -> hello.s
: ์ปดํ์ผ๋ฌ (Compiler) ๊ฐ ๊ณ ์์ค ์ธ์ด๋ฅผ ์ ์์ค ์ธ์ด๋ก ๋ํ๋ด๋ ์ผ
์์ค ํ๋ก๊ทธ๋จ์ ๋ชฉ์ (object) ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณํํ๋ ์์ ์ด๋ค.
์ฆ, ์ฐ๋ฆฌ๊ฐ c์ธ์ด๋ก ์ด์ฌํ ์ฝ๋ฉํ ๋ด์ฉ์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๊ฟ์ค๋ค!
์ปดํ์ผ ์ค๋ฅ๋ ๋ฌธ๋ฒ ์ค๋ฅ๋ก, ์์ค ํ์ผ์ ์์ ํด์ผ ํ๋ค.
3) ์ด์ ๋ธ - hello.s -> hello.o
: ์ด์ ๋ธ๋ฌ (Assembler) ๊ฐ ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊ฟ์ฃผ๋ ์ผ
์ค๋ธ์ ํธ ํ์ผ์ ์์ฑํ๋ค.
4) ๋งํฌ - hello.o -> hello.exe
: ๋ง์ปค (Linker) ๊ฐ ์ฌ๋ฌ ์ค๋ธ์ ํธ ํ์ผ์ ํ๋๋ก ํฉ์น๊ฑฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฉ์น๋ ์ผ
์ฆ, ๋ชฉ์ ํ๋ก๊ทธ๋จ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๊ฒฐํ์ฌ ์คํ ํ๋ก๊ทธ๋จ(.exe)์ ์์ฑํ๋ค.
* ๋ผ์ด๋ธ๋ฌ๋ฆฌ(library) : ํ๋ก๊ทธ๋๋จธ๋ค์ด ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ์์ฑํด ๋์ ๊ฒ
e.x ์ ์ถ๋ ฅ, ํ์ผ ์ฒ๋ฆฌ, ์ํ ํจ์ ๋ฑ๋ฑ
'SECURITY > REVERSING' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฆฌ๋ฒ์ฑ ์์ :: gdb -01 file, x-executable, gdb binary file (0) 2020.07.21 ๋ฆฌ๋ฒ์ค ์์ง๋์ด๋ง ์ด๋ (0) 2020.07.20 ๋ฐ์ด๋๋ฆฌ ํ์ผ, ํ์ผ ์๊ทธ๋์ฒ, PE ์ ELF ํ์ (0) 2020.07.19 ๋ฆฌ๋ ์ค(Linux) ๊ธฐ์ด - 03 ํธ์ง๊ธฐ :: vi ์ฌ์ฉ๋ฒ (0) 2020.07.16 ๋ฆฌ๋ ์ค(Linux) ๊ธฐ์ด - 02 Permission, chmod, ํ์ดํ๋ผ์ธ(|), ๋ฆฌ๋ค์ด๋ ์ (>) (0) 2020.07.16