본문 바로가기

쓰기

// 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
조회 수 :
16080
등록일 :
2008.07.08
17:32:38
엮인글 :
https://arallab.hided.net/3267/6e9/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 [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 180554
349 Talk 번역 플러그인 난해한 문제???? [3] 호기 2009-03-15 17494
348 Talk 0.2 & 0.3 번역플러그 기호 출력문제 [1] file 류제로 2009-12-21 17215
347 Talk 어제 말씀드렸던것... 알아냈습니다. file 나는누구인감? 2008-07-10 17189
346 Archive FixLine v2 20090331 테스트버전 [2] file Hide_D 2009-03-31 17155
345 Talk [Skin] 0.3버전용 폴라리스 공식 스킨(한글)을 만드려고 합니다. [8] 아랄 2009-12-23 17124
344 Talk INNODB 테스트 Hide_D 2009-12-09 17113
343 Talk 브라반 대체 뭐가 문제인걸까요 orz Hide_D 2008-07-08 17110
342 Archive [번역툴] QuickTrans 0.1.1 [4] HaruKaze 2009-05-04 17065
341 Talk 0.2, 0.3에서 메모리 덮어쓰기 모드의 차이점 [2] file Hide_D 2009-12-20 17027
340 Talk FixLine 23일자 파일은 무시설정에 문제가 있는듯하네요 [7] 류제로 2008-12-26 16772
339 Talk [버그 보고?]브라반 드디어 원인을 찾았습니다. orz [6] Hide_D 2008-07-08 16720
338 Talk XML 파싱 부분에 문제가 하나 있네요. Hide_D 2009-12-30 16713
337 Talk [질문]UTF 코드를 SHIFT-JIS와 KS코드로 변환 [4] 호기심맨 2008-09-02 16672
336 Archive [플러그인,소스] KoFilter 테스트 버전 20081118 file whoami 2008-11-18 16647
335 OtherFiles fixline 테스트 3차 [2] file 처음처럼만 2008-12-16 16638
334 Talk 문자열 길이에 대한 건의 file G2m 2010-01-21 16629
333 Archive [플러그인,소스] FixLine 테스트버전 081221 [5] file Hide_D 2008-12-21 16397
332 Talk 0.3에서 전국란스의 경우 [1] Hide_D 2009-12-13 16213
331 OtherFiles 히데님, 픽스라인 관련 메모장 파일입니다. [1] file astral 2008-12-16 16207
330 Archive [플러그인,소스] FixLine 테스트버전 081215 [5] file Hide_D 2008-12-15 16188