반응형
안티 디버깅을 공부해야 하는 이유
1. 각종 안티 디버깅 기법들의 동작 원리를 파악한 후 회피하기 위해서
2. 안티 디버깅 기법을 공부하는 과정에서 저절로 고급 리버싱을 배울 수 있음
안티 디버깅 기법이란?
고급리버싱 과정
디버거와 OS에 강한 의존성이 有 (특정 운영체제에만 동작 or 디버거 종류에 따라 안티 디버깅 기법 상이)
안티 안티 디버깅 기법
안티 디버깅을 상대하는 방법
안티 디버깅 분류
Static이랑 Dynamic으로 분류
Static은 디버깅 시작 시 한 번만 해체해주면 해결되지만 dynamic 기법은 디버깅 진행하면서 안티 디버깅을 만날 때마다 해결해야하므로 난이도가 高
Static | Dynamic | |
난이도 | Low, Medium | High |
구현 원리 | 다양한 시스템 정보 활용 | 디버거의 동작 원리 역이용 |
목적 | 디버거 탐지 | 내부 코드와 데이터 숨김 |
해체 시점 | 디버깅 시작 시 | 디버깅 도중 |
해체 횟수 | 1회 | 수시 |
해체 방법 | API Hooking, debugger Plugin | API Hooking, Debugger Plugin, Utilities |
대표적 기법은 책 801페이지 참고..
Static 안티 디버깅
정적으로 적용된 경우에는 디버거에 올렸을 때 제대로 실행도 안된다.
디버거를 탐지해서 프로그램 실행 못하도록 하는것
Dynamic 안티 디버깅
static 해결했다해도 안에서 프로그램 동작 원리를 보려면 디버거에서 트레이싱해서 원본 프로그램의 코드와 데이터를 확인해야함.
여기서 dynamic 안티 디버깅이 적용되어있다면 디버거 트레이싱을 방해해서 원본 코드와 데이터를 못보게 한다.
Run이랑 Trace 차이
Run은 디버기 프로세스 실행 시키기
Trace는 디버기의 내부 명령어를 하나씩 실행하면서 레지스터, 메모리 등을 실시간으로확인하는 것 = 한줄한줄 디버깅한다
반응형
'공부해요 > 리버싱_핵심원리' 카테고리의 다른 글
52. Dynamic 안티 디버깅 (0) | 2025.01.29 |
---|---|
51. Static 안티 디버깅 (0) | 2025.01.22 |
49. IA-32 Instruction (0) | 2025.01.12 |
48. SEH (0) | 2025.01.08 |
47. PEB (1) | 2025.01.02 |