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
728x90