키로깅 내용 한글 변환
외산 키로거로 로깅을 한 경우는 한글 처리가 되지 않는다는것을 잘 알고계실 겁니다.
그래서 "김부장 연봉 알아냈다" 같은 문장이 "rlaqnwkd dusqhd dkfdksoTek" 라는 단어로 기록되겠죠 :p
이것을 극복하기 위해서는 키 입력을 받았을 당시 키로깅을 할 때 한글화 처리가 필요합니다.
하지만 이미 텍스트로 저장해버린 상태에서는 그게 힘들어지겠죠 :(
그래서 고민을 해봤습니다. 어떤식으로 변환을 하면 될까...
결국 생각난 꽁수는 "rlaqnwkd dusqhd dkfdksoTek" 따위의 버퍼를 모두 메모리에 쌓아두고
노트패드를 띄운뒤 강제로 한글 키 상태로 바꿔주고 키보드이벤트로 그걸 그대로 타이핑 해주는
방법입니다. 이른바 매크로 기능을 활용한거라 볼 수 있겠네요(이 꽁수의 핵심적인
아이디어를 내어준 hackscode (구 Dr.Hong) 에게 감사 드립니다 ㅋㅋ)
일단 간단하게 코드를 설명해 보면,
1. 먼저 qkqhajdxnddk ..... 등이 기록된 텍스트 파일을 읽어서 버퍼에 넣습니다.
2. 그리고 CreateProcess()로 노트패드를 실행
3. keybd_event()를 이용하여 한글키로 바꿔줍니다. 최대한 번거로운 코딩을 피하기 위해서
CreateProcess()한 후에 대기시간으로 걍 1초간 슬립을 주는 쪽팔린 짓도 겯들였습니다.
4. 그리고 사이즈만큼 루프를 돌면서 메모장에 찍어댑니다. 두두두두 매크로 움직임을 볼 수
있겠네요 ㅋ
대략 이런 모양이 되겠죠 ㅋ
대충 급조해서 만들어 변환할 순 있을 겁니다.
단점은 내용이 많으면 그만큼 시간이 오래 걸리겠죠 ㅋ
그리고 알트탭을 한다던가 포그라운드를 다른 프로세스로 전환하면 대형사고가 발생할겁니다 ㅋ
아래는 풀 코드 입니다.
물론 이 코드에는 많은 문제가 있습니다.
키로거가 <BS> <SP> 따위로 특수키를 처리한다면 그게 <ㅠㄴ> <녜> 따위로 입력될 것이고
원래 영어로 된 문자열도 엉망진창이 되겠죠 ex) fuck -> 려차 , ssibal -> ㄴ냐ㅠ미 .....
그리고 개행 처리도 해놓지 않았죠. 문단이 엉망진창이 될겁니다.
(사실 Sleep()이 개발자로서 상상할 수 없는 짓을 한 가장쪽팔린짓이기도 합니다 ㅋ)
이같이 문제 투성이의 코드지만 어쨌든 역할은 충분히 하고 있습니다.
그리고 일단 내용만 까뒤집어볼 목적으로 제작한 것이기 때문에 그런 사소한 처리까지 하기는
너무 귀찮습니다.
그냥 이런 꽁수도 있다는 것을 알리기 위함으로 제작한 급조 코드임을 말씀 드립니다 :p
혹시 변환하는 더 좋은 방법 있으면 좀 알려 주세요 ㅠㅠ
window31. 2007년 12월
ps 아 한글 처리 되는 키로거도좀 알려주세요 ㅠ ㅠ
