- ํผ์ฆ ํ ์คํ ์ ์ ํจํ์ง ์๊ฑฐ๋ ์์์น ๋ชปํ ๋ฌด์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋จ์ ์ ๋ ฅํ์ฌ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๋ ์ํํธ์จ์ด ํ ์คํธ ๊ธฐ์ ์ ๋๋ค. ๐ก๏ธ
- ํผ์ฆ ํ ์คํ ์ ์ผ๋ฐ์ ์ธ ํ๋ฆ์ ๋ฌด์์ ์ ๋ ฅ ์์ฑ, ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ, ํ๋ก๊ทธ๋จ ์ถฉ๋ ๋๋ ์ค์๋ ์ฌ๋ถ ํ์ธ, ๋ฒ๊ทธ ๊ธฐ๋ก ๋ฐ ๊ณต์ , ๊ฒฐ๊ณผ ๋ถ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์นฉ๋๋ค. ๐
- cargo-fuzz๋ฅผ ์ฌ์ฉํ์ฌ Rust ์ฝ๋์ ๋ํ ํผ์ฆ ํ
์คํ
์ ์ํํ ์ ์์ต๋๋ค. ๋จผ์ cargo-fuzz๋ฅผ ์ค์นํ๊ณ
cargo fuzz init
๋ช ๋ น์ด๋ก ํผ์ฆ ํ ์คํธ๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์ค์ ํฉ๋๋ค. ๐ ๏ธ - ํผ์ฆ ํ
์คํธ ๋์ ํ์ผ(์:
target1.rs
)์์ ํ ์คํธํ ํจ์๋ฅผ ํธ์ถํ๊ณ , cargo-fuzz๊ฐ ์๋์ผ๋ก ์ ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ๐ฏ cargo fuzz run <target>
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํผ์ฆ ํ ์คํธ๋ฅผ ์คํํ๊ณ , ์คํจํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํ์ธํ์ฌ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ต๋๋ค. ๐- ํผ์ฆ ํ ์คํ ์ ๋ค์ํ ์ ๋ ฅ์ ํตํด ํ๋ก๊ทธ๋จ์ ์์ ์ฑ์ ๋์ด๊ณ , ํนํ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ (์: ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด)์์ ์ ์ฉํฉ๋๋ค. ๐ฆ
- ์์ ์์๋ ์ ๋ ฅ ํ์์ ๋ํ ํผ์ฆ ํ ์คํ ์ ์ํํ์ฌ ๋น ์ ๋ ฅ ๋๋ ํน์ ๋ฌธ์(์: '!')๊ฐ ํฌํจ๋ ์ ๋ ฅ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ์ฐพ์ ์์ ํฉ๋๋ค. ๐
- ํผ์ฆ ํ ์คํ ์ ์์์น ๋ชปํ ์ ๋ ฅ์ผ๋ก ์ธํ ํ๋ก๊ทธ๋จ์ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ , ๋ณด์ ์ทจ์ฝ์ ์ ์ฌ์ ์ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๐ก๏ธ