본문 바로가기

쓰기

에그헤드의 필터 기능을 타 써드파티 프로그램에서도 사용할 수 있게 하자는 발상으로 이지트랜스 플러그인인 Ehnd를 제작하게 되었습니다. 플러그인이라고 하는 이유는 Proxy DLL 기법을 이용해 구현하였고 (Ehnd의 DLL 이름은 J2KEngine.dll, 기존 이지트랜스 엔진 이름은 J2KEngine.dlx) 실제로 이지트랜스 내부 루틴에 간섭하기도 하기 때문입니다.


아랄트랜스에서 MultiByteToWideChar를 호출할 때 문자를 변환시키는데, Ehnd 내부에서 몇차례 MultiByteToWideChar / WideCharToMultiByte를 호출하기 때문에 아랄트랜스 후킹으로 인해 정상적인 번역이 이루어지지 않는 문제가 있어 아랄트랜스가 감지되면 원 함수로만 호출하도록 변경했습니다.


내부적으로 이지트랜스의 사용자 사전 루틴을 최적화하기 때문에 필터를 안쓰시고 단순만 쓰시는 분들도 사용하시는 분들이 많은데, ehnd와아랄을 같이 쓰시는 분들이 튕김 등의 불안정한 문제가 계속 보고되어 글을 올립니다.


(ehnd에 대한 자세한 내용은 http://foolmaker.blog.me/30165239769 여기를 참고..)


여러차례 요청해보려고 했지만 왠지 모르게 차단된 IP라고 뜨는 바람에 글을 쓰지 못했네요 =_=

제 IP는 115.23.216.* 입니다. 작년 가입해서 글을 쓸때부터 차단되었다고 뜨는데 IP 문제 해결 부탁드립니다. 현재는 오페라 오프로드 모드로 작성중입니다.

분류 :
Talk
조회 수 :
3434
등록일 :
2014.02.27
08:25:57
엮인글 :
https://arallab.hided.net/1794049/ea0/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/1794049

유리에리무리

2014.02.27
14:56:59

감사합니다!

whoami

2014.02.27
15:13:26

일단 115.23.216 으로 시작되는 스팸필터링을 지웠습니다. 자동 denied 가 되어 있는데 예전에 비슷한 IP로 누군가 뻘짓이라도 한 모양입니다...;; 아시겠지만 버그든 충돌이든 재현이 가능하지 않으면 고치지 못하니 좀 더 자세한 상황설명 부탁드립니다...

kiereh

2014.02.28
00:25:49

아랄 ATCode 플레이 시 특이한 문제가 없지만, Kirikiri 플러그인과 같이 쓰면 가끔 스크립트 오류가 나면서 충돌 문제가 나는 것을 확인했습니다.


Venus Blood GIGA의 경우 ATCode 플러그인 사용시 Ehnd 설치 유저들에게서 튕김 현상이 나타나고 있네요.

whoami

2014.02.28
01:47:50

음.. 일단 기리기리하고 비너스블러드.. 그리고 위에 적으신 MYC 블로그 내에서 DumpText 에서 문제가 생긴다고

하는 글도 봤습니다. 일단 기리기리나 ATCode 같은 경우 엄청나게 큰 플러그인이므로 문제를 찾기 어렵습니다만

DumpText 같은 경우 실제 사용해 보시고 코드를 보시면 아시겠지만 받은 문자열을 유니코드로 바꿔서 별도의

로그창에 뿌려주는 기능밖에 없거든요? 그런데 테스트해보니 DumpText 를 넣으면 안넣었을 때에는 그냥 넘어

가던 것이 어느정도 게임이 진행이 되다가 에러가 뜨는 것을 발견했습니다.

(소스: https://bitbucket.org/AralGood/araltrans-0.2/src/0477eadd531de716a04300210ecd2938968952f3/Filter/DumpText/?at=default)

 

그래서.. 혹시라고 생각하지만 아직 MultiByteToWideChar / WideCharToMultiByte 쪽에서 문제가 생기는 것이 아닌가

하고 조심스럽게 추측해 봅니다... 비너스블러드나 기리기리 역시 내부적으로 유니코드를 쓰는 게임(툴) 이므로

가능성이 꽤 있는 편이고요. 현재 Ehnd 속에서 어떻게 아랄트랜스를 피해 이 두 함수를 처리하는지 알 수가

없습니다만 혹시 관련 내용을 알려주실 수 있으신지요?

 

혹은.. 어차피 아랄트랜스 소스는 완전공개가 되어 있으므로 아무래도 두 소스를 같이 볼 수 있는 kiereh님

(MYC 의 소쿠리 님이시겠죠?) 께서 문제점을 찾으실 수 있지 않을까 하는 생각도 듭니다만..

 

현재 메인 소스 repository 는 문제가 있어서 bitbucket 쪽을 가져다 쓰고 있으므로 참고하시겠다면

이쪽의 소스를 보시기 바랍니다. https://bitbucket.org/AralGood/araltrans-0.2/overview 에서 보실 수 있으며

원하시면 팀원으로 invite 도 해드립니다.. +_+

 

 

kiereh

2014.03.01
09:00:04

현재 Ehnd에서는 MultiByteToWideChar / WideCharToMultiByte의 첫 네 바이트를 비교해서 수정이 되었는지 아닌지를 판단합니다. ATCode 플러그인이 함수를 변경했다고 확인할 경우, 내부적으로 원래 함수를 호출하도록 되어 있습니다. 에그헤드 등에서 유니코드를 출력할 수 있게끔 대응하는 코드가 있는데 이 부분이 문제가 있는것 같습니다. 시간을 내서 여러가지 확인해주신 점 감사드립니다 ^^

 

팀원 초대는 잘 받겠습니다. 그런데 요즘 혼자 번역기 프로젝트를 진행중이라 참여를 많이 할수 있을지는 미지수네요. sokcuri 네이버 메일입니다. 6월달에 Prototype을 낼 계획으로 작업하고 있으니 이쪽으로도 아무쪼록 잘 부탁드립니다.

whoami

2014.03.01
17:59:09

invitation 보냈습니다 ^^ 꼭 제작에 참여하시라는 뜻은 아니고 호환성 등의 문제를 해결하실 때 아랄트랜스 쪽에서 해결가능한 경우 누구에게 부탁하실 수도 있지만 직접 해결도 가능하지 않겠어요? 어차피 공개 프로젝트이고 누구나 참여 가능한 것이니 너무 부담 가지지는 마세요.

List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜sort 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155440   2008-08-03 2008-12-16 00:03
43 Talk 필터 3개 커밋 완료했습니다. [2] Hide_D 9263   2008-08-11 2009-01-06 01:06
HK2FK KoFilter TextDump whoami님이 안하셨길래 대신; RLCMD는 해도 괜찮을 것 같긴 한데, 이건 안하나요?  
42 Talk CustomSD 원문 단어 흘리기 결과. [2] whoami 9910   2008-08-10 2009-01-06 02:06
제가 다른분이 제작하신 플러그인 테스트를 하게 될줄은.. 어쨌든. 원문 - 誰だ⑤ 誰なんだよ⑤@n美奈⑤ そいつは誰なんだ⑤ 번역 - 누구다⑤ 누구이에요놡@n미나⑤ 그 녀석은 누구야 놡 단어 흘리기 (?) 가 되다 안되다 하는군요. 중간에 "놡" 은 된 것이고.. ⑤ ...  
41 Talk whoami님 Util.h의 옵션 파서가 [4] Hide_D 7908   2008-08-10 2008-08-10 15:13
문자열 을 지원하나요? 아니... 으음 c:documents and settindsuser내 문서Game,A루트(미완성).txt 라는 문자열을 파서로 받을 수 있나요?  
40 Talk 다음 계획 [1] Hide_D 9995   2008-08-10 2009-01-06 01:33
1. 개행 문자 처리 사용자가 정한 문자열(hex나 문자열중 하나 선택해서 입력)으로 벽을 뚫지 않도록[...] 개행문자를 처리해주는 기능 번역률 향상도 기해 할 수 있을듯. 2. 사용자 대본 기능 관련 http://koreajapan.pe.kr/make.htm 이녀석 문법 귀찮네요[.....  
39 Talk 맵을 이렇게 사용해도 되나요? [2] Hide_D 8705   2008-08-09 2008-08-09 22:13
void CCustomDic2::SetKey(LPCSTR JpnWord, LPCSTR KorWord) { map<UINT,struct DicWord> EmptyMap; struct DicWord TempWord; map<size_t,UINT>::iterator iterBook; TempWord.WordLen = strlen(KorWord); TempWord.WordN = WordN++; UINT Hash=MakeStringHas...  
38 Talk 플러그인을 다시 Multi2용으로 만들면서 생긴 궁금증 [4] Hide_D 8374   2008-08-09 2009-01-06 01:26
MFC를 그대로 써야하는지라 API용의 기본틀을 쓸순 없어서 새로 만들었는데, extern "C" __declspec(dllexport) BOOL __stdcall OnPluginInit(HWND hSettingWnd, LPSTR cszSettingStringBuffer); extern "C" __declspec(dllexport) BOOL __stdcall OnPluginOpt...  
37 Talk 함수, 변수 작명법 잘 정리된곳 없나요; [1] Hide_D 9291   2008-08-03 2009-01-06 01:00
결국 소스로 올려야하니까 좀 정리는 해둬야겠다.. 싶어서 번역쪽은 그냥 0.2버전(캐시 초기화) + 약간의 강화로 변경  
36 Talk 현재까지 작업물 + 에러 OTL [2] file Hide_D 9891   2008-08-03 2008-08-03 21:08
 
35 Talk VS 2005로 갈아탔습니다 [1] Hide_D 8272   2008-08-03 2009-01-06 01:34
MFC, 리소스 에디터 때문에 도저히 못 버티다가 옮겼습니다. VS 2008 깔고는 그 느린 속도에 기겁했는데, 이쪽은 꽤 빠르네요. [우홋홋] 근데, 2005와 2008 차이가 뭐죠? 버전 옮길때 그냥 파일 열고 버전 숫자만 바꾸면 땡이네요[...]  
34 Talk 0.3에서 추가할것 Hide_D 7908   2008-08-03 2009-01-06 01:00
까먹을까봐 정리 사용자 사전계 1. 사용자사전 유/무 2. 범용사용자사전 유/무 3. 사용자 정의한 주소의 파일 열기(취소) 4. 탭처리 5. 검색 알고리즘 강화(보류) ezTransXP 강화계 1. 번역후 괄호 처리(다이얼로그에 추가)(보류) 2. 사용자 사전과 완벽히 분...  
33 Talk DumpText는 아직 개선이 좀 필요한듯; [3] Hide_D 8111   2008-08-03 2009-01-06 01:00
여러개를 켤 수가 없다는 단점이 있네요[...] 그나저나 질문, 헤더 파일에서 extern으로 선언하면 그 프로그램 전체에서 공유되는건가요? 그렇다면, 창은 하나만 띄우고 플러그인 로드될때마다 번호를 매겨서 옵션을 먹여야 하려나요..  
32 Talk 문자열 -> Hex 변환이 제대로 안되네요. [7] Hide_D 7561   2008-08-02 2009-01-06 01:00
LPSTR ConvertHex(LPCSTR source){ size_t Len=strlen(source); char Temp[2048]=""; BYTE szBuf[3] = { '', }; int j=0; for(size_t i=0;i<Len;i++){ szBuf[0]=(BYTE) source[i]; szBuf[1]=(BYTE) source[i+1]; if(szBuf[0]<0x80){ //1바이트 코드라면 j += ...  
31 Talk 퓩퓩... 퓩퓩... oTL whoami 7557   2008-08-02 2009-01-06 01:35
원인을 알아냈습니다. 하지만 이건.. 참 난감하군요. 이 문제는 RLCmd의 문제가 아닙니다. 이 문제는 SOW방식의 문제도 아닙니다. 이 문제는 한글 완성형 코드의 문제입니다... oTL 예전에 KoFilter 를 한참 만들고 있을 때... 이 이야기가 나온 적이 있었습니...  
30 Talk DumpText를 만들고 있는데... [2] Hide_D 7892   2008-08-02 2008-08-02 12:04
밖에서 모달리스 다이얼로그 안으로 데이터를 넣어주는 간단한 방법 없나요 =ㅅ=; 저 방법이 생각안나서 지금 해보려고 하는게, 실시간으로 바깥의 isTextFilled 를 체크해서 true인 경우만 밖의 텍스트를 가져온 다음에 isTextFilled를 false로 만드는 방법밖...  
29 Talk 리얼라이브 세이브에 대해서... [4] 나는누구인감? 7894   2008-08-01 2009-01-06 01:00
오늘 학교에서 하라는 공부는 안하고 곰곰히 생각을 해봤습니다. 세이브 할 경우 현재 위치의 이미지 정보 읽어들임 → 현재 위치의 대사 정보 읽어들임 → 세이브 파일에 저장 로드 할 경우 세이브 파일의 이미지 정보 읽어들임 → 세이브 파일의 대사 정보 읽어...  
28 Talk 전에 쓸모 있는 기능의 2번 관련 Hide_D 8860   2008-07-31 2009-01-06 01:00
whoami님이 생각하시는 것 처럼 정규식도 생각은 해봤는데, 이건 저로서는 무리고 =ㅅ=; 저거 비스무~리 하게 와일드 카드만 사용 할 수 있는 모델을 게획해 봤는데, '이걸 만들어야 할지 말아야 할지' Hide_D는 연습장에 적힌 내용을 소환했다. > 문장의 시작...  
27 Talk 쓸모가 있을것 같은 기능들 [4] Hide_D 18225   2008-07-30 2010-08-04 16:58
1. 줄 재배치 (기능) 사용자 입력으로 개행 기호 (r, n, <br> 등등)를 입력 받고 일본어 부분에서 일단 저것들을 제거했다가 번역후 다시 넣는 기능. (효과) (1) 번역률 향상 개행문자가 사이에 있으면 심오한 번역문이 나옵니다. (2) 벽뚫기 완화 개행문자를 ...  
26 Talk 사용자 사전 플러그인에 대해서 설문 [5] Hide_D 8785   2008-07-30 2008-07-30 22:47
으음 기본적으로 모든 게임에 사용되는 사용자 사전 을 목표로 진행중이기 때문에 ezTransXPwithCustomDic이 아니라 ezTransXP가 되고 싶습니다만... 0.2에서는 특별한 다이얼로그가 없기 때문에 이걸 그냥 ezTransXP.dll로 만들어 달라기도 애매한 상황입니다...  
25 Talk RLCmd, KoFilter 의 디버그 로그 기능에 대해 - 2 whoami 10308   2008-07-28 2009-01-06 01:26
현재 정식버전에 디버그 로그기능은 살아있습니다. 단, 일반 사용자가 건드릴 수 없도록 옵션창에는 빠져 있습니다. 사용하시려면.. 멀티플러그인의 옵션 직접입력 창에서 집어넣거나 바로가기 편집에서 직접 넣어주시기 바랍니다.