본문 바로가기

Reversing/Anti-Debugging

[static 안티디버깅] BlockInput()

 

 

 

'  BlockInput()  '

 

 

 

 

설명

키보드 및 마우스 입력 이벤트가 애플리케이션에 도달하지 못하도록 차단합니다.

 

 

 

함수 원형

 

BOOL BlockInput(
  [in] BOOL fBlockIt
);

 

 

fBlockIt : 

이 매개 변수가 TRUE이면 키보드 및 마우스 입력 이벤트가 차단됩니다.

이 매개 변수가 FALSE이면 키보드 및 마우스 이벤트가 차단 해제됩니다.

 

 

 

디버깅 중  BlockInput(True); 함수가 호출되면  키보드와 마우스 이벤트 동작이 먹통이 되므로

다른 안티디버깅 루틴 처럼 디버깅 여부를 탐지 해내기 보다는

분석을 하는 행위에 직접적으로 방해를 주는 안티디버깅 기술 이다.

 

내부적으로 NtUserBlockInput() 를 호출 하여 키보드 , 마우스 이벤트 동작을 차단한다.

 

 

 

 

 

CODE

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

int main()
{
	int a;
	BlockInput(TRUE);
	printf("Input: ");
	scanf("%d", &a);
	return 0;
}

 

 

 

 

실습

 

1. ctrl + alt + del 키를 눌러 탈출이 가능하다. (해당 키 입력도 막는게 가능하여 막힌다면 다른 방법을 사용해야 함)

 

2. BlockInput() 함수의 fBlockIt를 False 로 인자를 준다.