PC리버싱/안티디버깅

INT 3 안티디버깅

Lamed_Dhhd 2020. 5. 15. 15:51
반응형

#define _WIN32_WINNT 0x0501

#include <stdio.h>
#include <windows.h>

void main(int argc, char* argv[])

{

__try {

__asm {

int 3;

}

}

__except (EXCEPTION_EXECUTE_HANDLER) 

{

MessageBox(NULL,"정상","정상",MB_OK);

goto ElSE;

}

MessageBox(NULL,"디버거 발견","디버거 발견",MB_OK);

ElSE:

return;

}

원리

https://ko.wikipedia.org/wiki/INT_(x86_%EB%AA%85%EB%A0%B9%EC%96%B4)

 

INT (x86 명령어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 INT는 x86 중앙 처리 장치를 위한 어셈블리어로서, 인터럽트를 발생시키는 역할을 한다. 이것은 바이트 값으로 구성된 인터럽트

ko.wikipedia.org

INT 3 명령어는 디버거가 실행중인 프로그램에 브레이크포인트를 설정하기 위하여 사용된다. 다른 INT 명령어들은 2 바이트를 사용하지만 이것은 명령어를 패치하는데 적합하게 1바이트를 사용한다. INT 3의 옵코드는 0xCC이다.

즉 브래이크포인트가걸리면 디버거가 실행중이므로

(원리2 디버거는 bp에서멈춘다)

예외를통해 그걸 확인하고 맞다면 감지 아니면 정상

exe예제파일

 

Int3.zip
0.01MB

 

설정에서 int 3를 건너뛰기를 누르면된다 (x64dbg)기준

아니면 어셈블리어를 수정해라

반응형

'PC리버싱 > 안티디버깅' 카테고리의 다른 글

Visual Studio 2019로보는 ASLR  (0) 2020.05.20
1. CheckRemoteDebuggerPresent() Windows API  (0) 2020.05.20
Isdebuggerpresent원리에대해서  (0) 2020.05.16
IsDebuggerPresent기법  (0) 2020.05.15
안티디버깅 기법들  (0) 2020.05.15