Q: Oh! Text Hooker를 사용해서 일본게임의 번역문을 실시간으로 볼 수 있다고
들었습니다. 간단한 사용방법을 알고 싶습니다.
A: 쓸데없는 내용은 모두 빼고 최대한 쉽게 설명드리도록 하겠습니다.
1) 일단 자신의 OS가 Windows NT/2000/XP/2003인지 확인합니다. Windows 9X/ME는
현재 지원하지 않습니다.
2) Oh! Text Hooker 최신버전을 http://ohhara.sarang.net/ohthk 에서 받아서 원하는
곳에 압축을 풉니다. 특별한 설치는 필요가 없습니다.
3) ezTrans XP를 구해서 설치합니다. 날짜제한이 있는 쉐어웨어버전도 있기 때문에
일반 자료실에서도 쉽게 구하실 수 있습니다.
4) 번역문을 보고자 하는 일본게임을 실행합니다.
5) Oh! Text Hooker ( ohthk.exe ) 를 실행합니다.
6) 프로세스 리스트가 나오게 되는데 여기서 아까 전에 실행을 시켰던 게임의
프로세스를 선택한 다음에 Attach를 선택해 줍니다.
7) Settings 화면이 나오게 되는데 Translation Plugin에서 jkeztrans.dll을 선택해
주고 OK를 선택해 줍니다.
8) 텍스트 윈도우에 일본게임의 내용이 실시간으로 번역이 되어서 나오는 것을
확인하실 수 있습니다.
9) 게임을 종료하면 Oh! Text Hooker도 함께 자동적으로 종료됩니다. 게임을
종료하기 전에 Oh! Text Hooker를 종료하게 되면 게임도 함께 종료됩니다.
주의하시기 바랍니다.
Q: Oh! Text Hooker는 왜 만들었습니까?
A: 처음에는 제가 가지고 있는 게임 일부가 일본어로케일에서만 제대로 일본어가
출력되고 한국어로케일에서는 일본어가 출력되지 않아서 이것을 제대로 출력하게
하기 위해 Win32 API 후킹에 대해 조사해서 만들기 시작했습니다. 그런데 만들면서
생각해 보니 게임에 나오는 텍스트중에 모르는 한자가 나왔을 경우 이것을 사전에서
찾는게 매우 힘든 경험을 예전부터 많이 했었던 기억이 났습니다. 그래서 텍스트를
추출해서 별도의 윈도우에 출력해 준다면 사전에서 찾기가 매우 편리하겠다는 생각을
하게 되었습니다. 복사, 붙여넣기를 사전에 한다면 쉽게 뜻을 찾아볼 수가 있고
일본어 IME가 설치되어 있다면 마우스 클릭으로 바로 한자의 일본어 음을 알아낼 수
있기 때문에 텍스트 추출기능을 넣기 시작했습니다. 그런데 이때 갑자기 또 하나
생각이 난 것이 이 추출된 텍스트를 그대로 번역기에 넣어서 번역된 문장을
사용자한테 실시간으로 보여준다면 상당히 유용해 질 것 같다는 것이었습니다.
이것이 현재의 Oh! Text Hooker입니다. 처음에는 이런 기능을 하는 프로그램이 있을
것으로 생각하고 인터넷을 통해 돌아다녀 보았지만 찾을 수가 없어서 직접 만들게
되었습니다.
Q: Oh! Text Hooker라고 이름을 지은 이유는 무엇입니까?
A: Oh (제가 '오'씨입니다.) Text (텍스트를) Hooker (가로채는 물건) 이라는 뜻에서
이렇게 지었습니다. Win32 API를 Hook하는 프로그램이기 때문에 Hooker라고
명명했습니다.
Q: ezTrans XP와 Oh! Text Hooker를 연결해서 사용하고 싶습니다. 어떻게 해야
합니까?
A: 우선 ezTrans XP를 설치합니다. Oh! Text Hooker의 jkeztrans.dll이 ezTrans XP용
플러그인입니다. jkeztrans.dll은 레지스트리에 있는 내용을 참고해서 ezTrans XP의
디렉토리를 찾기 때문에 ezTrans XP가 반드시 정상적으로 설치되어 있어야 사용이
가능합니다. 만약에 Oh! Text Hooker와 작동이 잘 되지 않으면 ezTrans XP를 한번
실행하고 종료시켜 보시기 바랍니다. 일단 정상적으로 설치한 후에는 Oh! Text
Hooker의 Settings의 Translation Plugin을 jkeztrans.dll로 선택해 주고 OK를
선택해 주면 됩니다. 이때 ezTrans XP는 실행하실 필요가 없습니다.
Q: Babel TOP 2002와 Oh! Text Hooker를 연결해서 사용하고 싶습니다. 어떻게 해야
합니까?
A: 우선 Babel TOP 2002를 설치합니다. Oh! Text Hooker의 bbtrans.dll이 Babel TOP
2002용 플러그인입니다. bbtrans.dll은 레지스트리에 있는 내용을 참고해서 Babel
TOP 2002의 디렉토리를 찾기 때문에 Babel TOP 2002가 반드시 정상적으로 설치되어
있어야 사용이 가능합니다. 일단 정상적으로 설치한 후에는 Oh! Text Hooker의
Settings의 Translation Plugin을 bbtrans.dll로 선택해 주고 OK를 선택해 주면
됩니다. 이때 Babel TOP 2002는 실행하실 필요가 없습니다.
Q: Babel TOP 2002와 ezTrans XP중 어느 것이 더 좋습니까?
A: ezTrans XP가 날짜제한이 있는 쉐어웨어 버전이 있어서 구하기도 쉽고 번역율도
Babel TOP 2002보다 뛰어납니다. 그리고 ezTrans XP는 일본어로케일에서도 잘
작동하기 떄문에 전체적으로 비교해 봤을 때 ezTrans XP가 더 좋습니다.
ezTrans XP는 창신소프트 ( http://www.cssoft.co.kr ) 에서 구입하실 수 있으며
Babel TOP 2002는 유니소프트 ( http://www.unisoft.co.kr ) 에서 구입하실 수
있습니다.
Q: Oh! Text Hooker의 플러그인중에 jpkrcode.dll의 기능은 어떻게 됩니까?
A: 일본어를 그대로 한글발음으로 바꿔주는 플러그인입니다. 예를 들어
"わたしはかんこくじんです" 라는 문장을 "와타시하카ㄴ코쿠지ㄴ데수"라고 바꿔주는
기능을 합니다. 플러그인의 예제용으로 하나 만들어 본 것입니다.
Q: 일본어로케일에서 Oh! Text Hooker는 정상적으로 작동합니까?
A: Oh! Text Hooker는 유니코드로 작성되었기 때문에 모든 로케일에서 정상적으로
작동합니다. 다만 플러그인이 로케일에 따라 작동을 다르게 할 가능성이 있습니다.
Babel TOP 2002 플러그인은 한국어로케일에서만 작동이 되며 ezTrans XP 플러그인은
한국어로케일과 일본어로케일에서 정상적으로 작동하는 것을 확인했습니다.
Q: 뭔가 훅이 되는 것 같은데 글자가 모두 깨져서 나옵니다. 어떻게 해야 됩니까?
다만 텍스트 윈도우에 뭔가가 훅이 되기는 하는데 글자가 모두 깨져서 나오는
경우에는 Settings에서 Font를 선택하면 글꼴을 바꿔서 문제를 해결할 수 있습니다.
굴림(Gulim)으로 선택하면 한국어가 잘 출력되고 MS Gothic으로 선택하면 일본어가
잘 출력됩니다. 그래도 뭔가 이상하면 Settings에서 Character Set도 변경해 보시기
바랍니다. HANGUL을 선택하면 한국어가 잘 출력되고 SHIFTJIS를 선택하면 일본어가
잘 출력됩니다.
Q: AppLocale과 Oh! Text Hooker를 함께 사용하면 정상적으로 작동이 되지 않습니다.
어떻게 해야 합니까?
A: AppLocale이 Oh! Text Hooker가 하는 행동과 비슷한 행동을 하기 때문에 서로
충돌하는 것으로 생각됩니다. 하지만 Oh! Text Hooker도 AppLocale의 기능 일부를
지원하기 때문에 일부 AppLocale에서만 작동되는 게임을 작동시킬 수 있습니다.
Oh! Text Hooker는 AppLocale이 나오기 전부터 존재하고 있던 프로그램입니다.
한국어로케일에서 일본어로케일에서만 돌아가는 프로그램을 작동시키기 위한
목적으로도 Oh! Text Hooker가 사용된 적이 있었습니다. 물론 요즘은 AppLocale의
강력한 기능에 완전히 밀려버렸고 Oh! Text Hooker의 기능은 AppLocale의 기능에
훨씬 못미치기 때문에 쓸모없는 기능이 되어버렸습니다. Oh! Text Hooker의
Settings에서 다른 것은 기본 설정으로 놔 두고 "Update original text (valid in
only one window)"를 선택해 주고 OK를 누릅니다. 이렇게 하면 일본어로케일에서만
작동되는 게임 일부가 정상적으로 작동됩니다. 주로 게임에 나오는 일본어 텍스트가
일부가 깨진다거나 아니면 깨진 한글로 출력되는 게임의 경우에는 대부분 Oh! Text
Hooker의 이 기능만으로 일본어가 복원돼서 출력됩니다. 그리고 파일이름이 일본어로
되어 있어서 한국어로케일에서 일부 글자가 ?로 바뀌면서 에러가 나는 것도 Oh! Text
Hooker에서 처리해 줍니다. 저는 처음에 이 기능을 WinMX에서 파일이름을 일본어로
만들기 위해 넣었습니다. 참고로 위와같이 설정하게 되면 텍스트 윈도우에 아무런
글자가 출력이 되지 않는 상태가 되기 때문에 File -> New Text Window를 선택해서
새로 윈도우를 하나 더 띄워야 훅되는 텍스트를 볼 수 있습니다.
Q: Oh! Text Hooker를 AppLocale대용으로 사용하려 했는데 AppLocale에서는 잘
되는데 Oh! Text Hooker에서는 안되는게 많습니다. 제가 뭔가 잘못한 겁니까?
A: 호환성면에서 AppLocale이 Oh! Text Hooker보다 훨씬 좋습니다. 그렇기 때문에
그것은 어쩔 수 없는 문제입니다. 처음 Oh! Text Hooker를 실행시킬 때 Attach를
선택해서 훅을 해 보기도 하고 Run을 선택해서 훅을 해 보기도 해 보시기 바랍니다.
상황이 약간 다르게 전개될 가능성이 있습니다.
Q: Oh! Text Hooker를 사용하려고 하니 KERNEL32.DLL에서 오류가 발생합니다. 제가
사용하는 OS는 Windows 9X/ME입니다. 어떻게 해야 합니까?
A: Oh! Text Hooker는 Windows NT계열(Windows NT/2000/XP/2003)용으로
개발되었습니다. Windows 9X/ME에서는 사용이 불가능합니다.
Q: Oh! Text Hooker를 Windows 9X/ME에서도 작동하도록 개선할 계획은 있습니까?
A: Windows NT계열과 Windows 9X계열은 겉모양은 비슷하지만 내부구조는 매우 큰
차이를 가지고 있습니다. Oh! Text Hooker는 내부 코드가 모두 유니코드로
작성되었고 다른 프로그램의 텍스트를 가져오기 위해 Win32 API를 후킹을 합니다.
Windows 9X계열 OS는 유니코드를 지원하지 않고 Win32 API의 후킹방법도 Windows
NT계열과 큰 차이를 가집니다. 기술적으로 불가능한 것은 아니지만 많은 시간투자가
필요하고 시간투자에 비해 얻을 수 있는 것이 적기 때문에 Windows 9X/ME에서
작동하도록 개선할 계획은 현재 없습니다.
Q: 어떤 OS에서 테스트를 해 보았습니까?
A: Windows 2000에서만 테스트를 해 보았고 주변사람들한테 부탁해서 Windows XP와
2003에서도 테스트를 해 보았습니다. 정상적으로 작동하는 것을 확인했습니다.
Windows 9X/ME에서는 KERNEL32.DLL에서 오류가 발생하면서 실행되지 않는 것을
확인했습니다. Windows NT에서는 테스트를 해 보지 않았는데 아마 되지 않을까 라는
막연한 생각은 가지고 있지만 안된다 하더라도 누가 신경쓸 사람도 없을 것 같아서
실제로 테스트는 해보지 않았습니다.
Q: 창모드에서 실행이 불가능한 게임은 어떻게 훅을 해야 합니까?
A: 그런 경우에는 텍스트 윈도우를 보기가 쉽지 않기 때문에 사용이 쉽지 않습니다.
Oh! Text Hooker의 Options -> Always On Top을 선택하게 되면 Oh! Text Hooker가
항상 위에 놓이게 되면서 전화면모드 게임의 위쪽에 Oh! Text Hooker가 보이게
되는데 이것을 이용해서 게임을 하면서 텍스트 윈도우를 볼 수 있습니다. 하지만
매우 불편하기 때문에 이 방법은 추천하지 않습니다.
Q: 텍스트가 정상적으로 훅이 되는것 같지가 않습니다. 뭐가 잘못된 겁니까?
A: 훅이 이상하게 되는 유형은 여러가지가 있습니다. 예를 들어서 한가지씩
살펴보도록 하겠습니다. 플러그인을 설정하지 않은 상태에서 게임 화면에 나오는
텍스트와 텍스트 윈도우에 나오는 텍스트를 비교해 보면서 아래 상황과 비교해
보시기 바랍니다.
실제 게임 화면에서 "そこにいってもいいですか?"라는 문장이 출력되었다고 했을
때를 기준으로 해서 여러 상황을 살펴보도록 하겠습니다.
1) そこにいってもですか? 라고 출력되는 경우
이것은 "いい"가 갑자기 사라져버린 형태입니다. 이런 게임은 폰트정보를 내부적으로
캐싱을 하는 경우에 발생합니다. "い"라는 글자가 어떻게 생겼는지 정보를 얻은
다음에는 다시 "い"라는 글자에 대한 정보를 요청하지 않습니다. 이런 경우에는
초반에 훅이 잘 되다가 후반에 가면 갈수록 점점 훅이 되지 않는 현상이 발생하게
됩니다. 해결방법은 현재 없습니다.
2) そそこそこにそこにいそこにいっそこにいってそこにいってもそこにいってもいそ
こにいってもいいそこにいってもいいでそこにいってもいいですそこにいってもいいで
すかそこにいってもいいですか? 라고 출력되는 경우
게임에 글자가 하나씩 출력되는 부분의 구현을 한줄에 한글자씩 추가해서 한줄
전체를 반복적으로 화면에 출력하는 방식을 사용하기 때문에 생기는 문제입니다.
해결방법은 현재 없습니다.
3) そこにいってもいですか? 라고 출력되는 경우
"いい"에서 "い"한글자가 없어진 형태입니다. Settings의 "Remove repeated text"가
기본설정으로 선택되어 있는데 이렇게 해 놓은 상태에서는 반복되는 글자는 모두
제거됩니다. 약간 눈에 거슬리기는 하지만 일본어에서 같은 문자가 반복되는 경우가
드물기 때문에 참고 쓸만합니다. "Remove repeated text"를 선택하지 않고 사용해
보시기 바랍니다. "Remove repeated text"를 선택하지 않은 상태에서 글자가
반복되는 모습이 보이지 않는다면 선택하지 않는 것이 더 좋습니다.
4) そこにいってもいいですか?そこにいってもいいですか? 라고 출력되는 경우
게임의 텍스트가 그림자 효과를 주거나 하기 위해 위치를 약간 바꿔서 두번 이상
그리는 경우가 있습니다. 이런 경우에는 같은 텍스트가 몇번 반복돼서 출력됩니다.
해결방법은 없지만 그래도 참고 쓸만합니다.
5) そこにいってもいいですか?そこにいってもいいですか?そこにいってもいいです
か?そこにいってもいいですか? . . . 처럼 무한반복이 되면서 출력되는 경우
게임에서 같은 곳에 같은 글자를 무한히 계속 출력하기 때문에 생기는 문제입니다.
Ctrl+2를 누르면 텍스트 윈도우의 텍스트가 잠시 멈추고 Ctrl+1을 누르면 텍스트
윈도우의 텍스트가 다시 작동하게 되는데 이것을 이용하면 약간 참을만 할 지는
모르겠습니다만 현재 이것 말고는 적당한 해결방법이 없습니다.
6) 알수없는 쓰레기 글자만 출력되는 경우나 아무것도 출력되지 않는 경우
게임이 윈도우폰트를 사용하지 않고 자체폰트를 사용하고 있을 가능성이 매우
높습니다. 주로 게임기용으로 나온 게임을 PC로 컨버전한 게임들은 윈도우폰트를
사용하지 않는 경향이 있습니다. 해결방법은 현재 없습니다.
Q: Oh! Text Hooker는 모든 게임에서 잘 작동합니까?
A: 제 개인적으로 테스트를 해본 결과로는 약 70%정도의 게임만이 정상적으로 잘
작동했습니다. 게임마다 모두 천차만별한 방법을 사용해서 화면에 텍스트를 출력하기
때문에 모든 게임에 잘 작동하도록 만드는 것은 기술적으로 거의 불가능합니다. 훅이
잘 되지 않는 게임의 세팅을 이것저것 바꿔가면서 시도하는 것보다 훅이 잘 되는
게임을 찾는 것이 더 현명한 선택이라고 저는 개인적으로 생각합니다.
Q: Oh! Text Hooker는 게임에만 사용할 수 있습니까?
A: 아닙니다. 글자가 나오는 모든 프로그램에 사용할 수 있습니다.
Q: 에뮬레이터 게임에 나오는 텍스트도 훅을 할 수 있습니까?
A: 현재는 불가능합니다. 나중에 시간적 여유가 있다면 각 에뮬레이터 개발자에게
연락을 해서 기술적으로 가능한지 질문을 해 볼 생각입니다만 대부분의
에뮬레이터에서 텍스트는 그림으로 그리기 때문에 불가능하다고 알고 있습니다.
Q: 소스코드는 공개하실 생각이 있습니까?
A: 언젠가는 공개를 할 생각인데 지금은 시기상 아니라는 생각이 들어서 당분간은
공개할 생각이 없습니다. 하지만 내부 구조나 기술적인 내용은 물어보신다면 최대한
지원을 해드리겠습니다.
Q: Oh! Text Hooker는 어떤 언어로 작성되었습니까?
A: C로 Win32 API만 사용해서 작성되었습니다.
Q: 플러그인의 소스코드는 어디서 볼 수 있습니까?
A: Oh! Text Hooker를 다운받으신 다음에 doc/plugins에 보시면 지금까지 개발된
모든 Oh! Text hooker용 플러그인의 소스코드를 보실 수 있습니다.
Q: Oh! Text Hooker를 훨씬 능가하는 프로그램을 만들고 싶습니다. 궁금한 것이
있을 때 물어봐도 되겠습니까?
A: 대환영입니다.
Q: Oh! Text Hooker에서 사용된 후킹 기술에 대한 정보는 어디서 얻을 수 있습니까?
1) Programming Applications for Microsoft Windows Fourth Edition by Jeffrey
Richter 라는 책에서 dll쪽 part를 읽어보시기 바랍니다. 그러면 Windows NT/2000/XP
에서 후킹을 하는 방법에 대해 이해하실 수 있습니다. 그리고 관련 소스에 오류가 좀
있기 때문에 errata를 보고 틀린 부분을 수정해서 보는 것이 좋습니다.
2) http://www.microsoft.com/msj/0200/hood/hood0200.aspx 에는 일부 제한적이기는
하지만 Windows 9X/ME에서도 사용 가능한 후킹 방법에 대한 소개가 나옵니다.
3) http://www.anticracking.sk/EliCZ/export.htm 에 있는 EliRT는 소스가 공개되어
있지 않지만 신기하게도 Windows 9X/ME에서도 후킹이 잘 되도록 구현되어 있습니다.
현재까지 나온 후킹 라이브러리중에서는 가장 좋은 듯 합니다. ( free for non
commercial use only ) 입니다.
Oh! Text Hooker에서는 첫번째와 두번째 기술을 사용합니다.
Q: 제가 개발하고 있는 프로그램에 Oh! Text Hooker에 있는 번역기능만 가져다가
사용하고 싶습니다. 어떻게 하면 됩니까?
A: Oh! Text Hooker를 개발하면서 이런 용도로 사용하고자 하는 개발자가 있을
것으로 예상돼서 번역기와 연결되는 부분은 라이브러리로 분리했습니다. Oh! Babel
Helper Library이며 홈페이지는 http://ohhara.sarang.net/ohbbhlp 입니다.
소스코드도 공개되어 있으며 BSD License하에 자유롭게 수정, 배포가 가능합니다.
Q: Oh! Text Hooker설명이 왜 전부 영어로 되어 있습니까?
A: 일단 초반에 개발을 시작했을 때 타겟이 한국만을 노린 것이 아니었기
때문입니다. 그리고 일한번역기가 추가되기 전에는 한국 이외의 다른 곳에서도
받아가는 사람들이 많이 있었습니다. 일한번역기가 플러그인으로 추가되면서
한국사용자가 폭증하기 시작했습니다. 그리고 영어, 한국어 페이지를 두개 만들만한
시간적 여유가 없었던 것도 원인이고 한국어 페이지만 만들어 놓으면 외국사람한테
자랑할 수 없는 것도 원인이고 핑계거리는 생각해 보니 많이 있군요. -_-;
Q: 이 FAQ는 왜 한글로만 작성했습니까?
A: 한국사람의 요청이 쇄도했기 때문입니다. ^_^ 그리고 영어 버전도 만들자니 좀
귀찮아졌습니다. -_-;
Q: 홈페이지가 너무 단순한 디자인을 가지고 있습니다. 왜 그렇습니까?
A: 겉멋을 내기 위해 투자하는 시간이 너무나도 아깝기 때문입니다. 그래서 Oh! Text
Hooker도 기능성에 중점을 두다 보니 인터페이스가 불편하다는 말을 많이
들었습니다.
Q: 현재 직업은 무었입니까?
A: 현재 대학생입니다. 졸업후에는 외국으로 취업을 하고 싶습니다. 저한테 일자리
소개시켜 주면 매우 감사하겠습니다. ^_^
첫댓글 으흠 그거 약간은 문제가 있다고 하더군요... 그래도 일어 모르는 분께는 아주 큰 도움이 될겁니다.