본문 바로가기

쓰기

가령 모듈 3가지가

DumpText,

FixLine,

EzTransXP

요렇게 있다고 가정할때


var c0_EzTransXP = new EzTransXP("NoSpace");

var c0_DumpText = new DumpText("KOut,KHex,KHex16");

var c0_FixLine = new FixLine("/ATData/c0.dat");


c0_DumpText.setNext(c0_EzTransXP);//DumpText 이후에 EzTransXP 사용

c0_FixLine.setNext(c0_DumpText);//FixLine다음에 DumpText


SetContext("C0",c0_FixLine);//별명 C0로 컨텍스트 엔진에 추가



이런식으로 썼을때 가령

어떤 텍스트를 번역하고 싶다면

var TrText = GetContext("C0").Translate("원하는 텍스트");


으로 쓸수도 있구요.


만약 직접 자바스크립트로 구동하는 녀석을 짜고 싶다면,


var c1_MyDouble = new Context(function(text){

var TrText = this.getNext().Translate(text);

        return TrText + TrText; //2배!

});


요렇게 해서

직접 쓸거면

c1_MyDouble.Translate("번역할것"); 하거나

SetContext("DoubleType",c1_MyDouble); 요렇게 등록해서 쓰거나요,



특이 개념으로

var Hook1 = new Hook(function(){

var Mem = this.ReadMemory("[EAX]+0x40",100,function(chunk){

for(var i=0;i<chunk.length();i++){

if(chunk[i]==0){

return i;

}

}

return -1;

});

        var Text = ToText(Mem,-1);

var MsgBox = GetDLL("User32.dll").GetFunc("MessageBoxW");

        MsgBox(0,"!!!","Before : "+Text,0);

        var TrText = GetContext("C0").Translate(Text);

        MsgBox(0,"!!!","Before : "+Text,0);


var Data = ToData(TrText,-1);

this.WriteMemory("[EAX]+0x40",Data,-1);

});

SetHook(null,"0x1000",Hook1);


이렇게 만들어볼 수도 있지 않을까 싶어요

분류 :
Talk
조회 수 :
8336
등록일 :
2011.04.21
16:56:33
엮인글 :
https://arallab.hided.net/43654/387/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/43654

Hide_D

2011.04.21
17:10:51

따로 GetContext, SetContext를 마련해 두는 이유는

각 경우에 따라 다른 플러그인을 사용하는 플러그인이 있을 경우 (FixLine이 유력)

단순히 getNext()로는 충분하지 않기 때문에 그냥 이 플러그인을 해당 Context의 마지막으로 두고

그 플러그인이 번역시에는


GetContext("지정해둔 이름")을 통해 다른 컨텍스트를 불러오기 위해서입니다.

아랄

2011.04.23
00:41:49


var c0_EzTransXP = new EzTransXP("NoSpace");
var c0_DumpText = new DumpText("KOut,KHex,KHex16");
var c0_FixLine = new FixLine("/ATData/c0.dat");

 

c0_DumpText.setNext(c0_EzTransXP);//DumpText 이후에 EzTransXP 사용
c0_FixLine.setNext(c0_DumpText);//FixLine다음에 DumpText

 

SetContext("C0",c0_FixLine);//별명 C0로 컨텍스트 엔진에 추가

// 네, 좋은 방법이네요. v8엔진을 들여다보지 못해 잘 모르겠습니다만
// EzTransXP, DumpText 같은 식별자는 아랄트랜스 코어모듈이 플러그인을 로드할 때 자동으로 선언/정의 하도록 동작해야 겠군요.

 

var TrText = GetContext("C0").Translate("원하는 텍스트");

// 스고이! 간단하고 명료합니다!

 

var c1_MyDouble = new Context(function(text){
 var TrText = this.getNext().Translate(text);
        return TrText + TrText; //2배!
});

// 역시 간단하고 명료합니다!
// 체인 상에 있는 다음 변환함수를 호출하는 룰을 정해 놓는다면
// preTranslate, postTranslate 들이 따로 존재할 필요가 없어지네요

 

 

c1_MyDouble.Translate("번역할것"); 하거나
SetContext("DoubleType",c1_MyDouble); 요렇게 등록해서 쓰거나요,

// 네, 한가지 걱정되는 점은 코드파인더들을 위해 컨텍스트, 모듈 같은 용어들을 다시 정리해야 할 것 같아요.
// 위의 컨셉대로라면 new EzTransXP("NoSpace") 이 한문장은 단순한 모듈객체 생성이 아닌 하나의 컨텍스트 생성이니까요.
// 그래서 컨텍스트 끼리는 체인을 형성할 수도 있고.. 단, 짤 때 순환참조 체인 형성은 주의해야 겠군요.

 

 

var Hook1 = new Hook(function(){

 var Mem = this.ReadMemory("[EAX]+0x40",100,function(chunk){

  for(var i=0;i<chunk.length();i++){

   if(chunk[i]==0){

    return i;

   }

  }

  return -1;

 });

        var Text = ToText(Mem,-1);

 var MsgBox = GetDLL("User32.dll").GetFunc("MessageBoxW");

        MsgBox(0,"!!!","Before : "+Text,0);

        var TrText = GetContext("C0").Translate(Text);

        MsgBox(0,"!!!","Before : "+Text,0);

 


 var Data = ToData(TrText,-1);

 this.WriteMemory("[EAX]+0x40",Data,-1);

});

SetHook(null,"0x1000",Hook1);

// "[EAX]+0x40" 에서 [EAX]는 다른 변수명으로 치환 후 eval 같은 함수를 사용하여 최종 정수 값을 구하는 건가요?
// 그냥 흥미롭고 궁금해서요 ^^;
// 그리고 네이티브 dll 프로시져를 호출하는 부분도 상당히 재밌네요!
// 인자 갯수 잘못주면 재앙이 일어날 수도ㅎㅎ

 

// 암튼 이래저래 굿입니다 히데님 짱짱~, 저는 대찬성~ =ㅁ=b


 

Hide_D

2011.04.23
20:13:45

[EAX]+0x40 같은건 별 수 없이

'직접 코딩한 계산기'를 이용해야 할 것 같습니다.

eval 때리면 이것이 옳은지 틀렸는지 확인하기가 어렵거든요 ㅇㅇ


그 다음으로 translate가 있는데

아무래도

Context.translate(text=string); 와

Context.translate(text=string,aux=string); 두가지가 가능하도록 해야할 것 같네요.

가끔 처리하면서 부가데이터를 함께 넣고 싶었던 적이 한두번이 아니라서요

Hide_D

2011.04.23
20:17:22

모듈 로드의 개념은 두가지가 있을 수 있는데

하나는 외부 UI에서 사용에 '체크'해주면 저 스크립트 내에서 쓸 수 있도록 하는 것과


또 하나는

Import("EzTransXP") 라고 주면 DLL을 불러오고, 외부 UI쪽에 해당 플러그인을 불렀음을 보내주는 것

정도네요.

List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
109 Archive FixLine v2 20090402 테스트버전 [1] file Hide_D 14431   2009-04-02 2009-04-02 09:03
 
108 Talk DumpText2 계획안 [6] file Hide_D 14432   2008-10-02 2009-01-06 01:24
 
107 Archive FixLine v2 20090331 테스트버전 [2] file Hide_D 14494   2009-03-31 2009-04-01 14:52
 
106 Talk [오류?] 아랄0.3 실행하여 autofinder 적용시 오류인지... [1] file 암흑마제 14512   2009-12-20 2009-12-20 13:54
 
105 Talk Windows7에서 0.3 현재시점으로 안돌아갑니다.ㅜ [6] Hide_D 14656   2009-12-04 2009-12-09 23:27
이유가 뭘까요  
104 Talk 일단 기리기리 미 번역 파트(선택지) 보고? file Hide_D 14675   2008-07-10 2008-07-10 00:34
 
103 Talk 파일을 다운로드 받을때 한가지 잠재적인 문제점을 발견했습니다. [2] Hide_D 14677   2009-12-18 2009-12-18 18:17
지금 보니까 사이트에 파일을 올려두고 파일을 받아가는 구조로 되어 있는듯 한데, 이 다운로드 고유 주소가 바뀔 수 있다는게 문젭니다. [ex : 업로더가 DenyWord.ini를 수정하기 위해 기존에 올려진 DenyWord.ini를 지우고 새로 올린 경우] 이 때 1. 사용자...  
102 Talk AralTrans 필터 물갈이할 예정입니다.... [1] Hide_D 14725   2009-05-21 2009-05-22 01:55
일단 제가 방학을 시작하기도 했고 하니 아랄트랜스 내에서 제가 제작한 필터를 싹 물갈이해볼 생각입니다. 우선 물갈이 대상 CustomDic 0.4 KDC CustomScript v2 DumpText v2 FixLine v3 작업을 위해서 다음과 같은 라이브러리를 만들어서 걍 복붙 시전할 계...  
101 Archive FixLine v2 20090404 [....] [1] file Hide_D 14767   2009-04-04 2009-04-04 19:10
 
100 Talk 번역 플러그인 난해한 문제???? [3] 호기 14864   2009-03-15 2009-10-20 18:06
지금 ML_Trans라는 번역 플러그인을 만들고 있는데 좀 이해가 안가는 문제가 생기네요.. 아랄에 적용시킨후 다른 번역 플러그인으로 바꿀때는 아무 문제가 안생깁니다 그러니까 번역 플러그인을 EzTransXp<->ML_Trans로 마구 여러번 바꾸어도 문제는 안일어 납...  
99 Archive [플러그인, 소스] CmdFilter 테스트 버전 20080712 [1] file whoami 14942   2008-07-12 2009-01-06 01:00
 
98 Talk [질문] HKCU/Software/AralGood/M2WAddr ? [3] whoami 14960   2008-07-08 2008-07-08 19:14
// CATCodeMgr::Init(ATCodeMgr.cpp) 중에서... // 어플로케일 관련 함수 m_sTextFunc.pfnOrigMultiByteToWideChar = (PROC_MultiByteToWideChar) CRegistryMgr::RegReadDWORD(_T("HKEY_CURRENT_USER\Software\AralGood"), _T("M2WAddr")); m_sTextFunc.pfnOri...  
97 Talk 문자열의 길이를 반영하는 '필터' [4] Hide_D 15027   2010-01-19 2010-01-22 01:28
문자열 길이가 고정되어서 포인터 바꿔치기를 통해서도 길이가 바뀌지 않는 것들이 있는데, 이놈들을 위해 길이를 반영하는 필터가 있으면 좋을것 같습니다. 인자로 반영할 메모리 주소 1. 모듈(메모리 주소) 기반 2. 레지스터 기반 으로 ATCode의 그것과 비슷...  
96 Talk 0.3 SVN 경로 수정했습니다! [2] Hide_D 15071   2009-12-23 2009-12-23 14:03
현재 아랄트랜스가 있는 서버에 SVN이 추가되어서 속도 향상을 목표로 SVN경로를 다음과 같이 변경했습니다. svn://aralgood.com/araltrans03/trunk revision은 몇가지 실수 빼곤 22개 리비젼 그대로 옮겨두었습니다. 다만 커밋 날짜가 달라지게 되므로 경로를...  
95 Talk 줄 바꿈을 n으로 하는 게임에서 벽뚫기 방지 해결책 [1] Hide_D 15082   2008-07-12 2008-07-12 18:09
http://aralgood.com/zbxe/33245 여기 스샷보고 생각난건데, 자릿수를 지정해 주고, n을 새로 먹여주면 벽뚫기가 줄어들지 않을까요.  
94 Talk 번역함수가 불렸을 때 자신이 불린 컨텍스트 이름을 아는 문제.. [8] whoami 15151   2009-12-24 2009-12-26 15:34
4. procTranslate 로 지정된 번역함수가 불렸을 때 자신이 어떤 컨텍스트로 불렸는지 아는 방법 현재 컨텍스트의 이름을 얻는 것 외에는 대부분 원하는게 가능할 것 같습니다. pObjectExtention 에 어떤 객체의 포인터를 넣어 놓고, procTranslate 가 호출되었...  
93 Talk 0.3에서 전국란스의 경우 [1] Hide_D 15179   2009-12-13 2009-12-14 02:10
ats파일을 만들어서 동작할경우 문제가 산넘어 산입니다. 1. 주소 문제 2. Rance7으로 바꾸었을때 AppLocale의 미묘한 작동 ㄹㅋ  
92 Archive [플러그인,소스] FixLine 테스트버전 081215 [5] file Hide_D 15213   2008-12-15 2008-12-16 01:18
 
91 OtherFiles fixline 테스트 [1] file 처음처럼만 15297   2008-12-16 2008-12-16 15:52
 
90 Archive [플러그인,소스] FixLine 테스트버전 081221 [5] file Hide_D 15475   2008-12-21 2008-12-22 02:30