"F7"을 눌러서 안으로 들어가면 4BD510번지로 이동하는데, 다시 "F8"을 누르면서 분석을 진행한다.
소프트웨어 BP, 하드웨어 BP 비교 정리
소프트웨어 BP : 올리디버거로 보면 빨강색이지만 가상메모리를 열어서 직접 보면 0xCC로 패치된다. "F9"를 누르면 0xCC로 패치된 곳에서 멈춘다. 0xCC를 어셈블리어로 바꾸면 INT 3이다. INT 3이라는 명령어를 실행코드 앞단에다가 설정함으로써 CPU가 이 명령을 실행할 때, 핸들러가 제어권을 디버거에게 넘겨주는 원리(명령어의 처음 1Byte를 INT 3으로 변경하는 형태로 구현)
오직 RAM에서만 실행할 수 있다.
* INT : CPU가 예외처리를 하기 위해 인터럽트를 발생한다.
* INT 3 : BP 인터럽트
하드웨어 BP : CPU내에서 Debug Register를 통해 제어한다. 디버그 레지스터들은 CPU내에서 주소에 직접적으로 Break를 걸 수 있다. CPU는 INT 1을 사용해 핸들러에게 제어권을 넘겨준다. 즉, 디버거에게 제어권을 넘겨준다.
* INT 1 : 디버그 인터럽트
소프트웨어 BP와 같이 RAM에서만 쓸 수 있는 것이 아니라 전 영역에서 사용가능
DLL같이 소프트웨어 BP가 설정되지 않는 것에 하드웨어 BP를 사용
다시 "F8"을 누르면서 분석을 한다. 하지만 계속 눌러도 Nag창이 뜨지 않는다.
그럼 다시 73xxxxxx번지로 이동한다. 그리고 "Animate + F8"을 누르면 73DE5446번지에서 Nag창이 발생한다.
1.프로그램을 재실행하고 73DE5446번지로 이동한다.
2. "F7"을 눌러서 안으로 들어가면 아래의 사진과 같이 73DE54D8번지로 이동한다.