안티 디버깅이란?
디버깅을 방지하여 분석하지 못하게 하는 기술이다.
끊임없이 막고 뚫기를 반복하기 때문에
정말 다양한 안티 디버깅 방법이 존재한다.
안티 디버깅을 배우는 이유
디버깅을 통해 프로그램의 정보가 유출되고, 프로그램의 흐름을 변경할 수 있기 때문에
디버깅을 막아야한다.
안티 디버깅의 종류
Static
프로세스에서 디버깅여부를 판단하여 방어하는 기법
비교적 쉽게 다양한 시스템 정보를 이용해서 구현가능하다
PEB, TEB 등
Dynamic
내부 코드를 감추고 보호하는 기법
비교적 어렵지만 디버거 동작 원리를 역이용하여 수시로 보호할 수 있다는 장점이 있다
Using SHE
안티 디버깅 기법들
PEB(Process Encironment Block)
프로세스를 담고있는 구조체이며, 현 프로그램의 디버깅 여부를 확인
TEB(Thread Environment Block)
쓰레드에 관한 정보를 담고있는 구조체
PEB구조체의 주소를 찾기위해 쓰인다
등 많다고 한다.