- PreProcess
초기 준비 단계이다. 아래와 같은 작업을 한다.
1. PUT에 대한 instrumentation 적용
2. 쓸모없는 configureation 제거
3. seed trimming
4. dirver app 생성
PUT 코드 사이사이에 instrumentation 코드를 삽입해 새로 컴파일한다. code coverage를 높이기 위한 작업으로 instrumentation이라고 한다.
gray-box와 white-box는 PUT에 instrumentation을 적용해 execution feedback을 수집하고 그에 맞춰 더 정교한 퍼징을 수행한다.
Program instrumentation을 static과 dynamic으로 나뉜다. Static 방식은 PUT 실행전 Preprocess 단계에서 적용되고, dynamic 방식은 실제로 PUT가 실행되는 InputEval 단계에서 적용된다. - InputGent (testCase Generator)
입력을 생성한다. - InputEval (Worker)
입력을 실행하고 crash 등이 터지는지 점검한다. - ConfUpdate (Logger)
fuzzer가 학습하는 단계이다. - Schedule
fuzzer 목표 달성을 위한 가장 효과적인 방법을 결정한다.
입력 생성시 수정될 시드를 선택하거나 모델을 사용하여 입력을 생성하는 방법에 대해 나타낸다
위와 같이 2.3.4.5를 반복한다.
<틀린 부분이 있다면 비난과 욕설을 해주세요>
'Fuzzing' 카테고리의 다른 글
Fuzzing101 Exercise6 (0) | 2024.07.07 |
---|---|
AddressSanitizer (0) | 2024.04.22 |
AFL++ download (1) | 2023.10.04 |
AFL++ (0) | 2023.10.04 |
FUZZING에 대해서 (0) | 2023.09.29 |