study/보안

[안티디버깅] INT3 (CC 패치)

lucykorea414 2024. 2. 23. 11:23
728x90

 

INT3

 

- 디버거가 실행중인 프로그램에 브레이크 포인트를 거는 역할 (일시적으로 실행중인 프로그램에 bp 거는데 적합)

- 다른 명령어들은 2바이트를 사용하는데 INT3 은 1바이트를 사용해서 명령어 패치하는데 적합함

- opcode: CC

- 소프트웨어 브레이크 포인트로 사용됨

 

C/C++ 코드

bool IsDebugged()
{
    __try
    {
        __asm int 3;
        return true;  // debugger detected
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return false; // no debugger detected
    }
}

 

만약 디버거가 없다면 예외가 발생하고 예외처리를 핸들러가 함 

만약 디버거가 있다면 예외를 핸들러가 처리하지 않음

 

 

 

 

[참고]

https://en.wikipedia.org/wiki/INT_(x86_instruction)

https://anti-debug.checkpoint.com/techniques/assembly.html

https://m.blog.naver.com/stop2y/221218235366

https://stackoverflow.com/questions/61816297/what-is-int-3-really-supposed-to-do

https://faydoc.tripod.com/cpu/int3.htm

728x90