OllyDbg 브레이크포인트
브레이크 포인트
OllyDbg에서 많이 사용하는 브레이크 포인트는 소프트웨어 브레이크포인트와 하드웨어 브레이크포인트가 있다.
소프트웨어 브레이크포인트는 OllyDbg에서 <F2>키를 눌러 설정하는 가장 일반적인 브레이크포인트로, 개수에 제한 없이 필요한 만큼 만들어서 쓸 수 있다.
하드웨어 브레이크포인트는 프로세서에서 제공하는 특정 영역에 브레이크포인트를 설정한 주소를 기록하는 방식이다.
소프트웨어 브레이크포인트
소프트웨어 브레이크포인트는 브레이크포인트를 설정한 명령어의 맨 앞에 있는 1바이트가 ‘CC’(INT 3)로 대체된다. 프로세스가 명령어를 순서대로 실행하다가 명령어 맨 앞에 있는 바이트가 ‘CC’로 되어 있으면 인터럽트를 발생시킨다. 인터럽트 서브루틴 수행이 끝나면 원래 루틴으로 복귀하여 프로세스가 계속 명령어를 수행하게 된다. 따라서 소프트웨어 브레이크포인트 실행동작에 대해서만 설정할 수 있다.
하드웨어 브레이크 포인트
하드웨어 브레이크포인트는 명령어가 바뀌는 것이 아니라 프로세서에서 디버거를 위해 특별히 제공하는 레지스터인 디버거 레지스터에 브레이크포인트를 설정하고 관련 주소를 입력한다. 총 4개의 하드웨어 브레이크포인트를 설정할 수 있다.
하드웨어 브레이크포인트의 장점은 명령어뿐 아니라 메모리에도 브레이크포인트를 설정할 수 있다는 것이다. 즉, 프로세스에 의해서 직접 실행되는 명령어뿐 아니라, 실행되지 않는 메모리에 저장된 데이터에도 브레이크포인트를 설정할 수 있다. 접근,쓰기,실행 이렇게 세 가지 동작에 대해 브레이크포인트를 구체적으로 설정할 수 있다. 데이터 크기도 지정할 수 있다.