Reversing/Anti-Debugging
[static 안티디버깅] BlockInput()
zer0flag
2023. 6. 10. 10:15
' 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 로 인자를 준다.