본 발명은 이와 같은 종래의 자동 입력 감지 방법의 문제점과 한계를 극복하기 위해 창안된 것으로서, 본 발명이 이루고자 하는 기술적 과제는 응용 프로그램으로부터 하드웨어 형태의 자동 입력 장치로 전달되는 데이터와 자동 입력 장치로부터 운영체제로 전달되는 데이터 간의 상관 관계를 분석하여 자동으로 입력되는 이벤트를 감지해냄으로써 API 후킹 방식을 통한 자동 입력 방어 방법의 한계를 극복할 수 있는 자동 입력 감지 방법 및 그 장치를 제공하는 데 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생하는 자동 입력 이벤트를 감지하는 자동 입력 감지 방법은, 입력 수단에 의하여 발생되어 컴퓨터로 전달되는 이벤트를 모니터링 할 수 있는 이벤트 감시 모듈을 컴퓨터 운영 체제 내에서 구동시키는 단계; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링 할 수 있는 데이터 감시 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계; 상기 입력 수단으로 전달되는 데이터가 감지될 경우, 상기 감지된 데이터에 대응되는 이벤트가 상기 입력 수단으로부터 상기 컴퓨터로 전달되는지 검사하는 단계; 및 상기 감지된 데이터에 대응되는 이벤트가 상기 입력 수단으로부터 상기 컴퓨터로 전달되는 것으로 판단되는 경우, 상기 감지된 데이터에 대응되는 이벤트를 비정상적인 이벤트로 처리하는 단계를 포함하여 구성된다.
바람직하게는, 상기 이벤트 감시 모듈은 상기 입력 수단에 관련된 상기 컴퓨터 운영 체제 내의 디바이스 드라이버 스택 상에 위치되어 구동된다.
더 바람직하게는, 상기 이벤트 감시 모듈은 상기 입력 수단의 이벤트를 필터링할 수 있도록 상기 디바이스 드라이버 스택 상의 임의의 위치에서 구동되는 필터 드라이버이다.
더 바람직하게는, 상기 이벤트 감시 모듈은 상기 디바이스 드라이버 스택 상에 존재하는 임의의 드라이버를 후킹하여 상기 입력 수단의 이벤트를 모니터링하는 후킹 드라이버이다.
더 바람직하게는, 상기 데이터 감시 모듈은 상기 입력 수단에 관련된 상기 컴퓨터 운영 체제 내의 디바이스 드라이버 스택 상에 위치되어 구동된다.
더 바람직하게는, 상기 데이터 감시 모듈은 상기 입력 수단으로 전달되는 데이터를 필터링할 수 있도록 상기 디바이스 드라이버 스택 상의 임의의 위치에서 구동되는 필터 드라이버이다.
더 바람직하게는, 상기 데이터 감시 모듈은 상기 디바이스 드라이버 스택 상에 존재하는 임의의 드라이버를 후킹하여 상기 입력 수단으로 전달되는 데이터를 모니터링하는 후킹 드라이버이다.
더 바람직하게는, 상기 비정상적인 이벤트로 처리하는 단계에서 상기 입력 수단으로부터 전달되는 이벤트가 비정상적인 이벤트로 판단된 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 응용 프로그램을 종료한다.
더 바람직하게는, 상기 비정상적인 이벤트로 처리하는 단계는, 상기 입력 수단으로부터 전달되는 이벤트가 비정상적인 이벤트로 판단된 경우, 감시 카운터를 증가시키는 단계; 및 상기 감시 카운터가 소정의 임계치 이상이 되었을 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 응용 프로그램을 종료하는 단계를 포함한다.
본 발명의 또 다른 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생하는 자동 입력 이벤트를 감지하는 자동 입력 감지 방법은, 입력 수단에 의하여 발생되어 컴퓨터로 전달되는 이벤트를 모니터링 할 수 있는 이벤트 감시 모듈을 컴퓨터 운영 체제 내에서 구동시키는 단계; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링 할 수 있는 데이터 감시 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계; 소정의 시간 동안 상기 데이터 감시 모듈에 의해 감지된 상기 입력 수단으로 전달되는 데이터의 개수를 카운트하는 단계; 상기 소정의 시간 동안 상기 이벤트 감시 모듈에 의해 감지된 이벤트의 개수를 카운트하는 단계; 상기 데이터 감시 모듈에 의해 감지된 데이터의 개수와 상기 이벤트 감시 모듈에 의해 감지된 이벤트의 개수를 비교하는 단계; 및 상기 데이터 감시 모듈에 의해 감지된 데이터의 개수와 상기 이벤트 감시 모듈에 의해 감지된 이벤트의 개수의 차가 소정 임계값 이하인 경우, 상기 입력 수단으로부터 상기 컴퓨터로 전달되는 이벤트를 비정상적인 이벤트로 처리하는 단계를 포함하여 구성된다.
바람직하게는, 상기 비정상적인 이벤트로 처리하는 단계에서 상기 입력 수단으로부터 전달되는 이벤트가 비정상적인 이벤트로 판단된 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 응용 프로그램을 종료한다.
본 발명의 또 다른 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생하는 자동 입력 이벤트를 감지하는 자동 입력 감지 방법은, 입력 수단에 의하여 발생되어 컴퓨터로 전달되는 이벤트를 모니터링 할 수 있는 이벤트 감시 모듈을 컴퓨터 운영 체제 내에서 구동시키는 단계; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링 할 수 있는 데이터 감시 모듈을 상기 컴퓨터 운영 체제 내에서 구동시키는 단계; 소정의 시간 동안 상기 데이터 감시 모듈에 의해 감지된 상기 입력 수단으로 전달되는 데이터의 개수를 카운트하는 단계; 상기 소정의 시간 동안 상기 이벤트 감시 모듈에 의해 감지된 이벤트의 개수를 카운트하는 단계; 및 상기 데이터 감시 모듈에 의해 감지된 데이터의 개수와 상기 이벤트 감시 모듈에 의해 감지된 이벤트의 개수 모두 소정 임계값 이상인 경우, 상기 입력 수단으로부터 상기 컴퓨터로 전달되는 이벤트를 비정상적인 이벤트로 처리하는 단계를 포함하여 구성된다.
바람직하게는, 상기 비정상적인 이벤트로 처리하는 단계에서 상기 입력 수단으로부터 전달되는 이벤트가 비정상적인 이벤트로 판단된 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 응용 프로그램을 종료한다.
본 발명의 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생되어 컴퓨터로 입력되는 자동 입력 이벤트를 감지하는 자동 입력 감지 장치는, 입력 수단에 의하여 발생되어 상기 컴퓨터로 전달되는 이벤트를 모니터링 할 수 있는 이벤트 감시부; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링 할 수 있는 데이터 감시부; 상기 이벤트 감시부에 의해 감시되는 이벤트 및 상기 데이터 감시부에 의해 감시되는 데이터를 각각 전달받아 상기 이벤트 감시부에 의해 감시되는 이벤트와 상기 데이터 감시부에 의해 감시되는 데이터 간의 상관관계를 분석하고, 상기 이벤트 감시부에 의해 감시되는 이벤트가 상기 데이터 감시부에 의해 감시되는 데이터에 의해서 발생되는 것으로 판단되는 경우, 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 이벤트 처리부를 포함하여 구성된다.
바람직하게는, 상기 이벤트 처리부는 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 상기 컴퓨터에서 구동되는 응용 프로그램을 종료한다.
본 발명의 또 다른 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생되어 컴퓨터로 입력되는 자동 입력 이벤트를 감지하는 자동 입력 감지 장치는, 입력 수단에 의하여 발생되어 상기 컴퓨터로 전달되는 이벤트를 모니터링하여 그 개수를 카운트하는 이벤트 감시부; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링하여 그 개수를 카운트하는 데이터 감시부; 소정 시간 동안 상기 이벤트 감시부에 의해 감시되는 이벤트의 개수 및 상기 데이터 감시부에 의해 감시되는 데이터의 개수를 전달받아 둘 간의 차를 계산하고, 상기 계산된 차 값이 소정의 임계치 이하인 경우, 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 이벤트 처리부를 포함하여 구성된다.
바람직하게는, 상기 이벤트 처리부는 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 상기 컴퓨터에서 구동되는 응용 프로그램을 종료한다.
본 발명의 또 다른 실시예에 따른 하드웨어 형태의 자동 입력 장치에 의하여 발생되어 컴퓨터로 입력되는 자동 입력 이벤트를 감지하는 자동 입력 감지 장치는, 입력 수단에 의하여 발생되어 상기 컴퓨터로 전달되는 이벤트를 모니터링하여 그 개수를 카운트하는 이벤트 감시부; 상기 컴퓨터로부터 상기 입력 수단으로 전달되는 데이터를 모니터링하여 그 개수를 카운트하는 데이터 감시부; 소정 시간 동안 상기 이벤트 감시부에 의해 감시되는 이벤트의 개수 및 상기 데이터 감시부에 의해 감시되는 데이터의 개수를 전달받아 상기 소정의 임계치와 비교하고, 상기 이벤트의 개수 및 상기 데이터의 개수가 모두 소정의 임계치 이상인 경우, 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 이벤트 처리부를 포함하여 구성된다.
바람직하게는, 상기 이벤트 처리부는 상기 입력 수단에 의해 발생되는 이벤트를 비정상적인 이벤트로 처리하는 경우, 상기 이벤트를 무시하거나, 상기 이벤트를 전달받아 처리하는 상기 컴퓨터에서 구동되는 응용 프로그램을 종료한다.
상기한 바와 같은 본 발명의 자동 입력 감지 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
본 발명에 의하면 하드웨어 형태의 자동 입력 장치의 근본적인 동작 방식에 기인하여, 컴퓨터와 입력 수단 간에 주고 받는 데이터와 이벤트의 상관관계를 분석하여 자동 입력 여부를 진단하기 때문에, 컴퓨터와 입력 수단 간의 통신 방법을 근본적으로 바꾸거나 하드웨어 자체를 새롭게 변경하지 않는 이상, 거의 모든 형태의 하드웨어 타입 자동 입력 장치를 원천적으로 진단할 수 있게 된다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위 해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도1은 자동 입력 장치와 컴퓨터 간의 연결 구성(100)을 나타내는 개념도이다.
도1은 USB(Universal Serial Bus)를 지원하는 컴퓨터와 입력 장치가 연결된 모습을 나타내고 있다. 일반적으로 USB 포트를 사용하는 하드웨어 장치는 기본적으로 Control Endpoint와 Vendor에서 지정하여 사용할 수 있는 Interrupt 및 Bulk 방식의 인터페이스를 통하여 컴퓨터 운영체제 및 응용 프로그램과 통신하게 된다. 따라서, USB 포트를 사용하는 입력 장치라면 위에서 언급한 인터페이스 중 하나를 통하여 컴퓨터 운영체제나 응용 프로그램으로부터 데이터를 전달받게 된다. 특히, 마우스나 키보드와 같은 입력 장치의 경우에는 운영체제로부터 최소한의 입력만 받고(예를 들면, Num Lock 키가 눌릴 경우 키보드의 Num Lock 램프에 불이 들어오거나 나가게 하기 위하여 운영체제에서 키보드로 control data를 전송한다.), 대부분의 동작은 주로 입력 장치에서 운영 체제 쪽으로 이벤트를 전송하게 된다.
도1의 경우 입력장치(120)은 USB 포트를 통해서 컴퓨터(110)과 연결되게 된다. 이때, 대부분의 정상적인 USB 키보드 및 USB 마우스는 왼쪽의 경우처럼 USB 장치에 공통적으로 존재하는 Control Endpoint(130)를 사용하여 입력 장치(120)의 정보 등을 운영체제에 전달하거나, 또는 운영체제로부터 정보를 전달받는다. 즉, 양방향(IN/OUT)의 데이터 전송이 가능하다. 그리고, 사용자가 키보드를 누르거나 마우스를 이동하여 발생한 이벤트는 Interrupt IN Endpoint(140)을 통하여 운영체제 쪽으로 전달되게 된다. 따라서, 정상적인 USB 키보드 및 USB 마우스의 경우 최초 연결 시에만 Control Endpoint(130)을 통하여 양방향(IN/OUT) 간의 통신이 발생하 고, 그 이후의 대부분의 동작은 Interrupt IN Endpoint(140)을 사용하여 입력 장치(120)으로부터 컴퓨터(110)쪽의 방향(IN)으로만 이벤트 전송이 이루어지게 된다.
하지만, 오토마우스, 오토플레이와 같은 하드웨어 형태의 자동 입력 장치들의 경우에는 자기 스스로 어떤 종류의 키보드 이벤트나 마우스 이벤트를 발생시켜야 하는지 결정을 못하기 때문에 자신을 관리하는 전용 응용프로그램으로부터 반드시 Control Data를 전달받아야 한다. 따라서, 최초 연결 시에만 컴퓨터(110)로부터 입력 장치(120) 쪽으로(OUT) 데이터 전달이 발생하는 정상적인 USB 마우스나 USB 키보드의 경우와는 달리, 자동 입력 장치의 경우에는 Control Endpoint(130)을 통하여 최초 연결 이후에도 지속적인 데이터 전송이 컴퓨터(110)으로부터 입력 장치(120) 방향(OUT)으로 발생하게 된다. 또는, Interrupt OUT Endpoint(150)와 같은 별도의 인터페이스를 사용하여 최초 연결 이후에도 데이터가 컴퓨터(110)으로부터 입력 장치(120)방향으로 전달될 수도 있다.
따라서, 컴퓨터(110)에서 입력 장치(120) 방향으로 전달되는 Control Data와 입력 장치(120)에서 컴퓨터(110) 방향으로 전달되는 이벤트 Data를 모두 감시하게 되면 둘 간의 상관관계를 알 수 있게 되고 이를 이용하여 하드웨어 형태의 자동 입력 장치를 통해 발생하는 자동화된 입력을 감지할 수 있다. 즉, 하드웨어 자동 입력 장치를 동작시키기 위해서는 전용 응용 프로그램 및 드라이버로부터 주기적인 입력이 자동 입력 장치로 전달되어야 하고, 그에 상응하는 이벤트가 자동 입력 장치로부터 발생하게 되므로 이것을 분석하여 자동화된 입력을 감지하는 것이다.
이하에서는, 이와 같은 원리에 입각하여 본 발명의 실시예에 따른 자동 입력 감지 방법을 보다 구체적으로 설명한다.
도2는 본 발명의 일 실시예에 따른 자동 입력 감지 방법을 수행하기 위한 컴퓨터 운영체제 구성을 나타내는 개념도이다.
컴퓨터를 운영하는 컴퓨터 운영 체제(200)은 크게 커널 레벨과 유저 레벨로 나눌 수 있다. 커널 레벨은 컴퓨터의 주 기억 장치에 상주하는 운영 컴퓨터 운영 체제의 핵심적인 부분으로서, 시스템의 초기화와 인터럽트를 처리하기 위한 특별한 프로세스들, 프로세스 모니터, 프로세스들 사이의 환경 교환과 새로운 프로세스를 생성해 내는 모듈 등을 포함하고 있다. 또한, 컴퓨터에 연결된 입력 수단의 인터럽트 신호를 처리하기 위한 디바이스 드라이버들이 위치된다. 한편, 유저 레벨에서는 컴퓨터 운영 체제 내에서 각종 응용 프로그램이 구동되며, 커널 레벨에서 처리된 프로세스, 인터럽트들이 응용 프로그램에 전달된다. 이때, 응용 프로그램에 전달되는 프로세스, 인터럽트들은 여러 가지 형태로 처리되어 응용 프로그램에 전달될 되는데, 메시지 큐(message queue)에 의해 메시지의 형태로 전달될 수도 있고, 메시지의 형태로 가공되지 않고 그 자체로 직접 전달이 될 수도 있다.
예를 들면, 사용자가 키보드나 마우스와 같은 입력 장치를 이용하여 입력 이벤트를 발생시키면, 이 이벤트는 컴퓨터의 운영 체제의 커널 레벨에 위치하는 인터럽트 서비스 루틴(ISR : Interrupt Service Routine)에 의해서 인터럽트 신호로서 처리가 된다. ISR에서 처리된 이벤트는 상기 입력 수단을 구동하는 디바이스 드라이버(230)를 거쳐서 처리된다. 디바이스 드라이버(230)는 하나 이상이 구동될 수 있으며 다수의 디바이스 드라이버(230)가 모여 디바이스 드라이버 스택을 이룬다. 디바이스 드라이버(230)에 의해 처리된 이벤트는 유저 레벨로 전달이 된다. 유저 레벨로 전달된 이벤트들은 그 자체로서 응용 프로그램(240)에 전달되거나 또는 메시지 큐에 의해서 메시지 형태로 전달될 수 있다. 메시지의 형태로 전달되는 경우, 시스템 메시지 큐(SMQ : System Message Queue), 쓰레드 메시지 큐(TMQ : Thread Message Queue)와 같은 메시지 큐를 통해서 메시지의 형태로 응용 프로그램(240)에 전달되며, 메시지를 전달받은 응용 프로그램(240)은 이에 대응하는 처리를 수행하게 된다.
한편, 앞에서 설명한 바와 같이 하드웨어 형태의 자동 입력 수단(300)은 스스로 입력 이벤트를 생성해낼 수 없고 이를 구동시키는 전용 응용프로그램이 필요로 하게 된다. 따라서, 본 발명에서는 이러한 전용 응용 프로그램으로부터 자동 입력 수단(300)으로 전달되는 제어 데이터를 감시하는 데이터 감시 모듈(220)을 컴퓨터 운영체제(200) 내에 구동시킨다. 상기 데이터 감시 모듈(220)은 자동 입력 수단(300)을 구동하는 전용 응용 프로그램으로부터 자동 입력 수단(300)으로 전달되는 콘트롤 데이터를 감시할 수 있는 위치라면, 컴퓨터 운영 체제(200) 상의 유저 레벨 또는 커널 레벨의 어떤 곳에 위치하여 구동되더라도 상관없다. 예를 들면 데이터 감시 모듈(220)은 자동 입력 수단(300)을 구동하는 디바이스 드라이버(230) 상의 필터 드라이버일 수도 있고, 또는 디바이스 드라이버(230) 상의 특정 드라이버를 후킹하는 후킹 드라이버일 수도 있다.
자동 입력 수단(300)은 전용 응용 프로그램으로부터 콘트롤 데이터를 전송받아서 이에 대응되는 입력 이벤트를 컴퓨터 운영체제(200)로 전달한다. 여기서, 자동 입력 수단(300)에 의해서 발생되는 입력 이벤트를 감시할 수 있는 이벤트 감시 모듈(210)을 컴퓨터 운영체제(200) 내에서 구동시킨다. 상기 이벤트 감시 모 듈(210)은 데이터 감시 모듈(220)과 마찬가지로, 자동 입력 수단(300)으로부터 응용 프로그램(240)으로 전달되는 이벤트를 감시할 수 있는 곳이라면, 운영체제(200) 내의 어떤 곳에 위치되어 구동되더라도 상관없다. 예를 들면, 이벤트 감시 모듈(210)은 자동 입력 수단(300)을 구동하는 디바이스 드라이버(230) 상의 필터 드라이버일 수도 있고, 또는 디바이스 드라이버(230) 상의 특정 드라이버를 후킹하는 후킹 드라이버일 수도 있다.
이렇게 이벤트 감시 모듈(210) 및 데이터 감시 모듈(220)을 통하여 컴퓨터 운영체제(200)와 자동 입력 수단(300) 간의 서로 주고 받는 이벤트와 데이터를 분석한다. 만약, 데이터 감시 모듈(220)에서 감지되는 제어 데이터에 대응되는 입력 이벤트가 자동 입력 수단(300)으로부터 입력되는 것이 이벤트 감시 모듈(210)에 의해 감지될 경우, 자동 입력 수단(300)으로부터 응용 프로그램(240)에 전달되는 이벤트를 비정상적인 이벤트로 처리한다. 비정상적인 이벤트로 처리되는 경우, 상기 이벤트를 무시해버리거나 상기 이벤트를 전달받아 처리하는 응용 프로그램(240)을 종료시킬 수 있다.
또는, 비정상적인 이벤트로 판단되는 경우를 카운트하여 카운트된 횟수가 소정의 임계치 이상이 되었을 경우에, 그 이후에 입력되는 이벤트를 모두 무시해 버리거나 상기 이벤트를 전달받아 처리하는 응용 프로그램(240)을 종료시킬 수도 있다.
한편, 데이터 감시 모듈(220)에서 감지되는 데이터와 이벤트 감시 모듈(210)에서 감지되는 이벤트 간의 상관 관계는 주고받는 데이터의 개수의 일치 여부 또는 비례 여부 비교, 또는 특정 제어 데이터에 대해서는 특정 이벤트가 주기적, 반복적으로 발생한다는 등과 같은 것들을 분석하여 판단할 수 있다.
또는, 컴퓨터로부터 입력 장치로 소정의 임계치 이상의 데이터가 전달되는 것은 앞에서 설명한 바와 같이 비정상적인 경우이므로, 데이터 감시 모듈(220)에 의해 감지된 데이터의 개수와 이벤트 감시 모듈(210)에 의해 감지된 이벤트의 개수가 소정 임계값 이상인 경우에는 비정상적인 입력 이벤트인 것으로 판단할 수도 있다.
이하에서는, 도3 내지 도5를 참조하여, 본 발명의 각 실시예에 의한 자동 입력 감지 방법을 단계 별로 자세히 설명한다.
도3 내지 도5는 본 발명의 각 실시예에 따른 자동 입력 감지 방법을 나타내는 흐름도이다.
도 3을 참조하면, 먼저 입력 수단에 의하여 발생되어 컴퓨터로 전달되는 이벤트를 모니터링 할 수 있는 이벤트 감시 모듈(210) 및 컴퓨터로부터 입력 수단으로 전달되는 데이터를 모니터링 할 수 있는 데이터 감시 모듈(220)을 컴퓨터 운영 체제 내에서 구동시킨다(S310). 이때 이벤트 감시 모듈(210) 및 데이터 감시 모듈(220)은 각각 이벤트와 데이터를 감시할 수 있는 컴퓨터 운영체제(200) 내의 임의의 위치에서 구동될 수 있다.
그리고, 응용 프로그램(240)이 구동되는 동안 컴퓨터로부터 입력 수단으로 전달되는 데이터 및 입력 수단에서 컴퓨터로 전달되는 이벤트를 감시한다(S320).
감시를 수행하는 동안 데이터 감시 모듈(220)에 의하여, 특정 데이터가 컴퓨 터로부터 입력 수단으로 전달되는 것이 감지되면(S330), 이벤트 감시 모듈(210)에 의하여 감지된 입력 수단으로부터 전달되고 있는 이벤트를 상기 데이터 감시 모듈에 의해 감지된 데이터와 비교 분석한다. 만약, 컴퓨터로부터 입력 수단으로 전달된 데이터와 입력 수단으로부터 컴퓨터로 전달되는 데이터가 직접적인 상관 관계를 갖는 서로 대응되는 것으로 분석되는 경우(S340), 해당 이벤트를 비정상적인 이벤트로 처리한다(S350).
즉, 자동 입력 수단을 콘트롤하기 위한 전용 응용 프로그램이 특정 동작을 수행하도록 지시하는 제어 데이터를 입력 수단으로 전달하고, 이에 대응되는 이벤트가 입력 수단으로부터 발생되었는가를 분석하는 것으로서, 이는 입력 수단으로 전달되는 일련의 특정 데이터에 대하여, 입력 수단이 일련의 특정 이벤트만을 발생시킨다는 등의 상관 관계를 파악하는 것이다.
도4는 본 발명의 다른 실시예에 따른 자동 입력 감지 방법을 나타내는 흐름도이다.
먼저, 이벤트 감시 모듈(210) 및 데이터 감시 모듈(220)을 컴퓨터 운영 체제 내에서 구동시킨다(S410). 그리고, 소정 시간 동안 입력 수단으로 전달되는 데이터의 개수 및 입력 수단에서 컴퓨터로 전달되는 이벤트의 개수를 카운트한다(S420). 상기 소정 시간이 경과된 후, 상기 소정 시간 동안 카운트된 데이터의 개수 및 이벤트의 개수를 서로 비교한다(S430). 이때, 카운트된 데이터의 개수와 이벤트의 개수가 서로 동일 또는 거의 일치하는 경우에는, 앞서 설명한 바와 같이 현재 컴퓨터로 입력 이벤트를 전달하고 있는 입력 수단이 자동 입력 장치라고 판단할 수 있다. 즉, 카운트된 데이터의 개수와 이벤트의 개수가 서로 동일 또는 거의 일치한다고 볼 수 있을 만큼, 그 차이가 소정의 임계치 이하일 경우(S440)에는, 현재 컴퓨터에 연결되어 있는 입력 수단은 자동 입력 장치이므로, 여기서 발생하는 이벤트는 비정상적인 이벤트라고 판단하는 것이다(S450).
또는, 도5에 나타나 있는 본 발명의 또 다른 실시예에 의할 경우, 카운트된 데이터의 개수 및 이벤트의 개수가 소정의 값 이상일 경우(S530)에, 현재 컴퓨터에 연결되어 있는 입력 수단은 자동 입력 장치이므로, 여기서 발생하는 이벤트는 비정상적인 이벤트라고 판단한다(S540). 왜냐하면, 최초 연결 시를 제외하고는 컴퓨터에서 입력 수단으로 일련의 데이터를 다량 전송하는 일은 없으므로, 비정상적인 동작이라고 할 수 있을 만큼의 다량의 데이터가 컴퓨터로부터 입력 수단으로 전달되는 경우에는 자동 입력 장치에 의한 자동 입력이 컴퓨터로 전송되고 있다고 판단하여, 입력되는 이벤트를 무시하거나, 현재 입력되는 이벤트를 받아서 실행되고 있는 응용 프로그램을 종료한다.
한편, 이하에서는, 본 발명의 실시예에 따른 자동 입력 감지 장치에 대하여 설명한다.
도6은 본 발명의 실시예에 따른 자동 입력 감지 장치(600)의 구성을 나타내는 개념도이다.
본 발명의 실시예에 따른 자동 입력 감지 장치(600)은 이벤트 감시부(610), 데이터 감시부(620), 및 이벤트 처리부(630)을 포함하여 구성된다. 상기 이벤트 감시부(610)은 키보드나 마우스와 같은 입력 수단으로부터 컴퓨터로 전달되는 이벤트 를 감시하고, 그 개수나 크기 등을 카운트 하는 등의 역할을 수행한다. 상기 데이터 감시부(620)은 컴퓨터로부터 상기 입력 수단으로 전달되는 제어 신호 등과 같은 데이터를 감시하고, 그 개수나 크기 등을 카운트 하는 등의 역할을 수행한다. 한편, 이벤트 처리부(630)는 상기 이벤트 감시부(610)와 상기 데이터 감시부(620)에서 감시된 이벤트 및 데이터 간의 상관 관계를 분석하거나, 그 개수 크기 등을 분석하여, 입력 수단으로부터 컴퓨터로 전달되는 이벤트를 차단, 무시하는 동작을 수행하거나, 또는 현재 입력되는 이벤트를 받아서 처리하는 컴퓨터 상에서 실행되고 있는 응용 프로그램을 종료시키는 동작을 수행한다.
만약, 이벤트 감시부(610)에서 감시되는 이벤트와 데이터 감시부(620)에서 감시되는 데이터가 서로 직접 대응되는 상관 관계가 있는 경우, 또는 상기 이벤트와 데이터의 소정 시간 동안의 감지된 개수가 서로 동일하거나 거의 일치하는 경우, 또는 상기 이벤트와 데이터의 소정 시간 동안의 감지된 개수가 소정의 임계치 이상인 경우에는 이벤트 처리부(630)는 현재 입력수단에서 컴퓨터로 입력되고 있는 이벤트를 차단, 무시하거나, 또는 현재 입력되는 이벤트를 받아서 처리하는 컴퓨터 상에서 실행되고 있는 응용 프로그램을 종료시키게 된다.
상기 자동 입력 감지 장치(600)는 컴퓨터 내부에 설치되는 내부 부품 형태로 구성될 수도 있고, 또는 컴퓨터 외부로부터 별도로 연결되어 설치되는 별도의 장치 형태로 구성될 수도 있다. 또는, 상기 자동 입력 감지 장치(600)의 각 구성요소인 이벤트 감시부(610), 데이터 감시부(620), 및 이벤트 처리부(630)가 수행하는 각 기능을 구현하는 모듈들이 컴퓨터 자체의 구성에 의하여 가상적으로 구현되어, 그 컴퓨터 자체가 상기 자동 입력 감지 장치(600)로서 동작할 수도 있다.
본 발명은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CO-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.