본문 바로가기

쓰기

// CATCodeMgr::Init(ATCodeMgr.cpp)  중에서...
  // 어플로케일 관련 함수
  m_sTextFunc.pfnOrigMultiByteToWideChar =
   (PROC_MultiByteToWideChar) CRegistryMgr::RegReadDWORD(_T("HKEY_CURRENT_USER\Software\AralGood"), _T("M2WAddr"));

  m_sTextFunc.pfnOrigWideCharToMultiByte =
   (PROC_WideCharToMultiByte) CRegistryMgr::RegReadDWORD(_T("HKEY_CURRENT_USER\Software\AralGood"), _T("W2MAddr"));

// MyWideCharToMultiByte (ATCode.cpp) 중에서..

int MyWideCharToMultiByte( /* 생략 */ )
{
 int nRetVal = 0;

 if( g_objATCodeMgr.m_sTextFunc.pfnOrigWideCharToMultiByte )
 {
  nRetVal = g_objATCodeMgr.m_sTextFunc.pfnOrigWideCharToMultiByte(  /* 생략 */   );
 }
 else
 {
  nRetVal = ::WideCharToMultiByte(  // 생략//   );
 }

 return nRetVal;
}

---------------------------------

왜 이런 일을 하는지 모르겠습니다.. 그냥 WideCharToMultiByte 를 쓰지 않고 이렇게 주소를 가져와야 하는 이유가 있는 건가요?

분류 :
Talk
조회 수 :
14960
등록일 :
2008.07.08
17:32:38
엮인글 :
https://arallab.hided.net/3267/0ed/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/3267

Hide_D

2008.07.08
17:36:18
비스타 때문이 아닌가요?
사용자 계정에서 임의의 프로그램이 Program Files에 직접 접근하는것을 막고 있는걸로 알고 있습니다.

whoami

2008.07.08
18:06:16
Program Files 하고는 상관이 없는 것 같은데요..;;

관리자

2008.07.08
19:14:20
안녕하세요 whoami님
어플로케일을 지원하게 하기 위한 코드입니다.
이녀석도 게임을 후킹하는데, 후킹하는 함수들 중 

WideCharToMultiByte
MultiByteToWideChar

두 함수도 포함되어 있죠.
따라서 아랄트랜스가 위의 함수들을 그냥 호출하면
어플로케일 후킹 코드로 빠져버리고, 그 문자열에 대해 열심히 로케일 변환 작업을 합니다.
이러면 의도하지 않은 외계어가 나오겠죠...

따라서 순수한 함수가 필요한데
다행히 위 두 함수는 kernel32.dll (맞나..?) 에 있는 함수라
모든 프로그램들이 주소가 동일합니다.
또한 어플로케일의 후킹 방법도 함수주소 테이블을 바꿔놓는 방식이기 때문에
실제 다른프로그램에서의 위의 두 함수 주소를 얻어온다면
두 순수한 함수를 쓸 수 있습니다.
AralTrans.exe 가 두 함수 주소를 레지스트리에 기록하고
ATCTNR.DLL 이 레지스트리로 부터 읽어옵니다.

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
29 Archive [실행파일, 플러그인] AralTrans, ATCTNR, ATCode 130804 (수정) [4] file TwoComet 874   2013-08-04 2013-08-07 21:12
 
28 Archive [플러그인,소스] ATCode 테스트 버전 140322 [4] file whoami 869   2014-03-22 2014-06-15 07:51
 
27 Archive ATCTNR, ATCode, Cached, DebuggingATCode, KiriKiri, NonCached 130616 [13] file whoami 868   2013-06-16 2013-06-18 22:38
 
26 Talk 어플로케일이 후킹하는 함수리스트... [2] TwoComet 868   2013-03-22 2013-03-27 10:26
NTDLL.DLL RtlMultiByteToUnicodeN RtlAnsiStringToUnicodeString RtlUnicodeToMultiByteN RtlUnicodeStringToAnsiString RtlOemToUnicodeN RtlOemStringToUnicodeString RtlUnicodeToOemN RtlUnicodeStringToOemString RtlUpcaseUnicodeToMultiByteN RtlUpcas...  
25 Archive [플러그인] ATCode 130203 file EroGame 820   2013-02-03 2013-02-03 20:53
 
24 Archive [플러그인] ATCode 130703 [20] file TwoComet 783   2013-07-03 2020-04-25 09:44
 
23 Talk 아랄 트랜스 github/svn [6] ka7713 734   2018-12-26 2018-12-30 17:26
안녕하세요. 아랄트랜스 0.2/0.3 업데이트가 되지 않는 것이 안타까운데, github나 다른 곳으로 올려주실 생각은 없으신지요. 큰 도움은 안되더라도 조금이나마 기여하고 싶네요.  
22 Talk 변경된 소스 좀 올려주세요. [1] whoami 715   2013-03-06 2013-03-06 19:09
안녕하세요. 오랫만입니다. 간만에 들러보니 폴라리스쪽에 큰 일이 있었더군요. 뭐 자세한 사항은 잘 모르겠지만.. 어쨌든.. 오랫만에 다시 한번 볼까 하고 SVN 업데이트를 했더니 1/31 이 마지막인데 이후로도 업데이트가 많이 되었더군요. SVN 업데이트를 가...  
21 Archive [플러그인] ATCTNR,ATCode 130202 file EroGame 715   2013-02-02 2013-02-02 05:01
 
20 Archive [플러그인,소스] KiriKiri 테스트 버전 [1] file 미소미소 707   2014-04-17 2015-02-23 21:38
 
19 Talk 정말 오래간만입니다. [5] Hide_D 694   2013-05-08 2013-07-04 04:45
중간에 폴라리스 폭파되었다는 소식 듣고 한번 들렀던 걸 제외하면 거의 1년 넘게 접속을 안하고 있었던 셈이네요 -0-;; 랩에 진행중인 과제도 있고해서 아직도 좀 바쁘긴 한데, 시간 나는데로 플러그인 관련으로 쌓인 일 좀 처리해 볼까 합니다. PS. 아직 관...  
18 Talk 스마트 방식과 윈7의 호환에 관한 잘못된 견해 [4] TwoComet 666   2013-07-06 2013-07-07 03:37
코드 게시글에 '스마트 방식이라 윈7에서 튕길지도 모른다'는 잘못된 인식을 불어넣는 것을 발견했기에 미리 사전에 이야기합니다. 해당사항의 정확한 원인은 아직까지 발견된 사례의 하나인 기가사나 타 브랜드에서 사용하는 넥서스 엔진에서만 해당하는 사항...  
17 Talk UTF-8이나 유니코드 원활한 필터처리를 위해 생각해봤는데 [5] Wales 620   2014-06-16 2014-07-29 16:39
Translate함수에 포함된 필터 전후처리를 따로 빼서 원문 전환전과 번역후에 필터 처리를 하도록 하는건데 문제는 필터들 전부 멀티바이트 중점으로 만들어지다 보니 필터 전부를 손봐야 하는 상황이 오는군요. 그래서 일단 보류중...  
16 Archive [실행파일] AralTrans 130601 file TwoComet 577   2013-06-02 2013-06-02 12:04
 
15 Talk aralgood.com 도메인 부활... [7] whoami 566   2014-03-02 2014-03-17 22:48
혹시나 하고 매일 한번씩 체크하곤 하는데.. 오늘 보니 도메인이 부활했군요! 아랄님이 체크하시고 부활시키셨나? 어쨌든 그에 따라 자동업데이트도 부활하고 좋군요. 혹시 아랄님이나 Hide_D군님 보시면.. 제로보드 업데이트 하실 생각 없으신가요? 꽤 오래된...  
14 Archive [본체] AralTrans.exe ATCTNR.DLL 150622 [4] file TwoComet 534   2015-06-22 2015-07-25 00:12
 
13 Archive [실행파일] AralTrans 130710 (7/28일자 부터 포함) file TwoComet 533   2013-07-10 2013-07-28 20:06
 
12 Talk 엔드 아랄호환 문제를 모두 수정했습니다 [2] kiereh 493   2014-04-28 2014-04-30 01:25
http://www.eroha.net/%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8/%ec%97%94%eb%93%9c/ 오늘자 버전 (140428)으로 엔드와 아랄트랜스간의 호환 문제가 수정되었습니다. 멀티쓰레드로 번역문을 막 쏘면 문자열 포인터가 튀면서 잘못된 참조를 하던 문제, %가 들어갈...  
11 Talk atcode.dll이 출력 못하는 글자를 수집해 봅니다. [2] file Wales 489   2014-02-05 2014-02-07 20:13
 
10 Archive [플러그인] ATCode 150531 file TwoComet 470   2015-05-31 2015-06-07 21:30