ANTI DEBUG 기법들(종명이형 강의 간단정리)

ANTI DEBUG
1. snapshot
     process context snapshot

2. checksum

3. packing
     section 권한 체크
     *virtualprotect - 권한 변경 함수
     암호화
     EP는 암호화를 푸는 루틴, 암호화 푸는 루틴이 실행되면서 암호화가 풀리면서 진짜 코드가
     쓰기, 실행가능한 영역에 써짐, 복호화된 코드의 시작이 OEP, 프로그램 실행!

4. garbage code
     prefix, code에 공백등 넣어서 디버거가 파싱하지 못하도록!

5. SEH
     강제로 exception 발생시켜 SEH에 정상루틴처리, 디버거가 물려있으면 SEH루틴 확인을 하기 힘듬

6. PEB
     InDebuggerPresent, FS[30]이용해서 디버거 물려있는지 확인

7. 난독화
     code 난독화로 해석하기 힘들게함

8. Time check (CPU clock check)

9. CC
     디버거의 특성을 이용해서 CC를 복사하는지 확인

10. 가상화
     가상으로 CPU를 만드는 개념
     55/8b ec를 push ebp, mov esp, ebp로 해석하지만 가상 cpu를 만들어서
     예를들면 66/92 d3를 push ebp, mov esp, ebp로 해석하도록 함

11. Control flow 난독화
     check값에 맞는 opcode를 수행, check++등을 이용해서 다음 opcode로 이동
     check 값을 전역변수로 놓으면 찾기 힘듬

*더미다는 10, 11을 기반으로 만들어진 패커

0 개의 댓글:

댓글 쓰기