본문 바로가기

쓰기

가령 모듈 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/4cd/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 [필독] 테스트필터 사용시 주의사항 라파에 155441   2008-08-03 2008-12-16 00:03
204 Talk 웹 계정 아이디/비밀번호 secret Hide_D 1   2011-01-02 2011-01-02 16:21
비밀글입니다.  
203 Talk CustomDic의 동작 방식에 대해서 secret Hide_D 4   2012-02-14 2012-02-14 13:36
비밀글입니다.  
202 Talk 코드정리 목록 + 코드 secret sizukana 6   2009-01-17 2009-01-17 11:41
비밀글입니다.  
201 Talk ATCTNR에다가 Python만 갖다 붙여도...? [1] Hide_D 280   2016-01-11 2016-01-12 01:30
ATCTNR에 몇가지 버그는 좀 있지만 이거 좀 보완하고, 인젝터 세팅가능하게 한다음에 ATCTNR + ProtocolBuffer(+gRPC) + Python 3 정도로 해서 묶으면, 꽤 재미있는 물건이 나오지 않을까 생각해봅니다 ㅇㅇ 이쪽은 Standalone으로 해볼만할 것 같기도 하고...  
200 Talk VB.NET에서 ezTransXP.dll사용하는 방법은 없나요? [1] R2D2 360   2016-06-14 2018-06-20 14:44
vb.net에서 MFC dll을 써서 이지트랜스로 번역해서 결과물을 가져오고 싶습니다. 그런데 아무리찾아봐도 방법을 모르겠습니다. Imports System.Runtime.InteropServices  Private Declare Fu*nction Translate Lib "ezTransXP.dll" (ByRef cszJapanese As Stri...  
199 Talk atcode.dll이 출력 못하는 글자를 수집해 봅니다. [2] file Wales 490   2014-02-05 2014-02-07 20:13
 
198 Talk 엔드 아랄호환 문제를 모두 수정했습니다 [2] kiereh 494   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)으로 엔드와 아랄트랜스간의 호환 문제가 수정되었습니다. 멀티쓰레드로 번역문을 막 쏘면 문자열 포인터가 튀면서 잘못된 참조를 하던 문제, %가 들어갈...  
197 Talk aralgood.com 도메인 부활... [7] whoami 567   2014-03-02 2014-03-17 22:48
혹시나 하고 매일 한번씩 체크하곤 하는데.. 오늘 보니 도메인이 부활했군요! 아랄님이 체크하시고 부활시키셨나? 어쨌든 그에 따라 자동업데이트도 부활하고 좋군요. 혹시 아랄님이나 Hide_D군님 보시면.. 제로보드 업데이트 하실 생각 없으신가요? 꽤 오래된...  
196 Talk UTF-8이나 유니코드 원활한 필터처리를 위해 생각해봤는데 [5] Wales 622   2014-06-16 2014-07-29 16:39
Translate함수에 포함된 필터 전후처리를 따로 빼서 원문 전환전과 번역후에 필터 처리를 하도록 하는건데 문제는 필터들 전부 멀티바이트 중점으로 만들어지다 보니 필터 전부를 손봐야 하는 상황이 오는군요. 그래서 일단 보류중...  
195 Talk 스마트 방식과 윈7의 호환에 관한 잘못된 견해 [4] TwoComet 666   2013-07-06 2013-07-07 03:37
코드 게시글에 '스마트 방식이라 윈7에서 튕길지도 모른다'는 잘못된 인식을 불어넣는 것을 발견했기에 미리 사전에 이야기합니다. 해당사항의 정확한 원인은 아직까지 발견된 사례의 하나인 기가사나 타 브랜드에서 사용하는 넥서스 엔진에서만 해당하는 사항...  
194 Talk 정말 오래간만입니다. [5] Hide_D 694   2013-05-08 2013-07-04 04:45
중간에 폴라리스 폭파되었다는 소식 듣고 한번 들렀던 걸 제외하면 거의 1년 넘게 접속을 안하고 있었던 셈이네요 -0-;; 랩에 진행중인 과제도 있고해서 아직도 좀 바쁘긴 한데, 시간 나는데로 플러그인 관련으로 쌓인 일 좀 처리해 볼까 합니다. PS. 아직 관...  
193 Talk 변경된 소스 좀 올려주세요. [1] whoami 715   2013-03-06 2013-03-06 19:09
안녕하세요. 오랫만입니다. 간만에 들러보니 폴라리스쪽에 큰 일이 있었더군요. 뭐 자세한 사항은 잘 모르겠지만.. 어쨌든.. 오랫만에 다시 한번 볼까 하고 SVN 업데이트를 했더니 1/31 이 마지막인데 이후로도 업데이트가 많이 되었더군요. SVN 업데이트를 가...  
192 Talk 아랄 트랜스 github/svn [6] ka7713 736   2018-12-26 2018-12-30 17:26
안녕하세요. 아랄트랜스 0.2/0.3 업데이트가 되지 않는 것이 안타까운데, github나 다른 곳으로 올려주실 생각은 없으신지요. 큰 도움은 안되더라도 조금이나마 기여하고 싶네요.  
191 Talk 어플로케일이 후킹하는 함수리스트... [2] TwoComet 868   2013-03-22 2013-03-27 10:26
NTDLL.DLL RtlMultiByteToUnicodeN RtlAnsiStringToUnicodeString RtlUnicodeToMultiByteN RtlUnicodeStringToAnsiString RtlOemToUnicodeN RtlOemStringToUnicodeString RtlUnicodeToOemN RtlUnicodeStringToOemString RtlUpcaseUnicodeToMultiByteN RtlUpcas...  
190 Talk 요 며칠간 아랄트랜스 사이트가 인기군요. [2] file whoami 926   2014-04-18 2014-04-28 16:06
 
189 Talk ATCTNR.dll 120809 업데이트..완료 EroGame 1174   2012-08-09 2012-08-09 14:31
원본 방식으로 후킹시 뒤에 밀린 명령어가 0x90 (nop) 로 밀어버려서 언훅시에 그 복사한 값에서 5길이 밖에 복구하지 않더군요. 버그 잡고.. 언훅 잘되는거 확인완료. 주의? 할점은 원본 후킹방식일때는 되도록이면 후킹 장소 지점에 명령어로부터 5 이상의 ...  
188 Talk ATCode 120817 [1] EroGame 1283   2012-08-17 2012-08-26 23:12
좀 큰 버그가 있어서 잡고나서 업데이트.  
187 Talk 아랄트랜스 번역플러그인에 이 프로그램들을 추가해주시면 안될까요? [5] 암흑마제 1536   2013-03-14 2013-03-14 22:16
1.TransCAT KJ/JK - 한일,일한 양방향 실시간 번역 프로그램 창신소프트의 이지트랜스와 마찬가지로 한일,일한 번역 프로그램입니다. 이지트랜스와 마찬가지로 사용자사전 기능을 제공하여 사용자사전을 잘만 이용하면 번역은 더 좋아집니다. 공통적인 성격을...  
186 Talk LEN 기능에서 체크기능 제거 및 투가기능. EroGame 1766   2012-05-10 2012-05-10 10:37
현재 LEN 기능으로 길이 연산 체크를 할때 -1이나 0의 범위까지 0x00인 NULL 문자로 길이 체크를 하잖아요? 그렇지 않은 경우도 있네요. 길이는 있으나 해당 번역문+길이 위치에 NULL문자가 없는 형태의 길이 교체형태도 추가주세요. (그때는 길이값만 변하도...  
185 Talk ATCode에 추가했던 ASLR 있잖아요. [2] EroGame 1767   2012-06-18 2012-08-03 08:38
http://lab.aralgood.com/index.php?document_srl=49989 이때 추가한건데 이거 따로 분리해서 사용 유무 지정하는게 좋을것 같네요. (xp에서는 무반응으로 처리하고) 특정 게임에서 연산중 뻗는 경우 발견되었습니다. 더미다 같은경우는 굳이 연산안들어가고 ...