글로벌 후킹이라

  얼마전 친구가 재미있는 프로그램을 보여주는 바람에 거기에 탄력이 붙어서 저도 비슷한 프로그램을 만들어 보려고 어제, 오늘 삽질을 좀 했습니다.

  프로그램은 스페셜포스라는 게임의 로그인을 빨리 해 주게 만들어 주는 프로그램인데요. 원리는 무척 간단합니다. 프로그램과 스페셜포스 클라이언트를 띄워 놓습니다. 그리고 로그인 도우미 프로그램은 F3키로 작동을 시작하고 또 다른 특정 키로 동작을 멈추게 됩니다.

  이 프로그램의 동작은 스페셜포스에 들어가려는 방을 클릭하고 F3키를 눌러주면 마지막에 마우스가 클릭했던 좌표를 기억해 그 좌표로 연속적인 더블클릭을 하게 만드는 일종의 매크로 프로그램입니다. 방이 가득 차 있으면 다른 사람이 빠져 나갈 때 까지 보통 마구 클릭을 하게 되는데요. 그걸 매크로가 대신 해 주게 만드는 것이지요^^ㅋ

  원리가 간단해서 쉽게 구현할 수 있을 줄 알았는데, 좀처럼 쉽지가 않네요. 일단 다른 언어들 보다 자바가 익숙하니 자바로 만들어 보려 했었는데, 이곳저곳에서 관련 자료를 찾아 다니다 알게된 사실이 자바의 VM에서는 글로벌 후킹을 지원하지 않는다고 하는군요. 스페셜포스 클라이언트 안에서의 마우스가 클릭한 좌표를 알아내야 하는데, 자바로 만든 폼 외의 이벤트 처리가 불가능 하니 마우스좌표를 후킹해서 알아내야 하는 것 같은데 불가능 한 것 같습니다…;; JNI를 사용하면 가능하다고는 하는데, 제가 다룰줄을 몰라서요…OTL 좌표만 알아내면 클릭 이벤트는 Robot클래스를 이용하면 대강 구현이 가능할 것 같은 느낌 이었거든요.

  혹시 다른 언어로라도 쉬운 방법으로 만들 수 있는 정보를 아시는 분은 좀 가르침을 부탁드리겠습니다. 마음을 바꿔서 델파이나 비쥬얼베이직으로 만들어 보려고 잠시 휴식하고 있습니다.

  그냥 재미삼아 만들어 보려 했다가 완죤히 탄력이 붙어버렸습니다. 후킹기술 같은게 필요하다는 생각은 못하고 시작 했었다가 좌절중입니다. 한번 만들어 보면서 조금 알아두면 도움이될 것 같다는 생각까지 하게되니 이거 멈출수가 없네요.

  이상으로 싸인펜의 삽질 뉴스입니다..ㅜㅜS