본문 바로가기

쓰기

가령 모듈 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/d9c/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
309 OtherFiles AralTrans.exe 파일 살짝 수정했습니다. + 아랄씨 계시면 보세요 file Hide_D 28477   2010-06-07 2010-06-07 05:11
 
308 Talk 번역 모듈로 인터넷을 이용하는 방법. Hide_D 30169   2010-06-04 2010-06-04 23:54
굳이 번역기를 이지트랜스를 쓰지 않아도 아랄트랜스를 사용하는 방법이 필요합니다. 네이버 번역 등을 인터넷으로 접근해서 쓰는 방법으로 번역 모듈을 만들어 보겠습니다.  
307 Talk 6월 1일 2시 챗던 Talk Hide_D 18098   2010-06-01 2010-06-01 02:34
대화 인물 : Hide_D, Rynie, G2m, 프시쵸 대화 주제 : 0.3 [ActiveX, ATS] Hide_D 본인이 직접 뜯어본것이 아니므로 사실과 다를 수 있습니다. Hide_D: 아 0.3 자체는 괜찮아요 Hide_D: 다만... G2m: ㅇㅇ Hide_D: 1. ActiveX Hide_D: 2. ATS Hide_D: 이 두놈...  
306 OtherFiles EncodeKor(한국어 <-> 일본어 문자 코드 대치) 재 작성 프로젝트! [16] file Hide_D 75319   2010-05-29 2010-10-25 09:55
 
305 OtherFiles [프로그램, 소스] AT 환경 수집기 20100526 [1] file Hide_D 30118   2010-05-26 2016-05-28 15:42
 
304 Talk 0.3님 제발 자비좀[.....] file 아무개 31299   2010-05-23 2010-05-23 06:20
 
303 Talk ATS의 문제점.. Hide_D 23578   2010-05-15 2010-05-15 19:18
0.2의 그 복잡하고 어려운 방식은 일단 뒤로 두고 0.3의 ATS가 갖는 허점이 1. 첨부파일, 필터 경로들을 [일일히!] 입력해야 한다. 2. 코드가 갱신되었을 때 대처할 방법이 전혀 없다. 일일히 입력하는 것 자체는 나쁘지 않은데, 2번 때문에 심각한 문제가 됩...  
302 Talk 0.3님 제발 자비좀[.....] [2] G2m 29951   2010-05-05 2010-05-23 06:21
디에스 이레 뚫으면서 알게된건데 일단 히데찌 말로는 관리자씨가 말하길 0.3 유니코드 완벽이염 ㅇㅇ 라고는 하는데 그 뭐랄까 문장 스크립트 형식이 00 30으로 시작하는 놈은 아랄이가 고대로 씹어 드셔서[............] 이걸 픽스로 잡아도 조트망이고 흠. ...  
301 Talk FixLine 버그 발생 [1] Hide_D 23382   2010-04-25 2010-05-01 22:19
!梨桜 01 21 979C 8DF7 을 처리하기 위해 %01%21{T} 로 설정하면 FixLine이 씹고 다음 데이터를 뱉지 않음 %21{T} 로 설정하면 아예 '닥치고 튕김' 지정된 문자열 + 임의의 문자열 구조로 했을때 버그가 있는듯 최대한 빨리 수리를 -_-;  
300 Talk 아랄3 디버깅이 말이죠... [2] file JKLeetro 35689   2010-04-20 2010-10-20 07:18
 
299 Talk Hide_D's Todo List [1] Hide_D 19791   2010-03-01 2012-08-03 09:02
좀 써 놔야 할것 같습니다 -_-; 안써두니까 안해요 1. FixLine v2 패턴간 빈칸을 없애는 옵션을 추가 -> 아마 큰 패턴 단위로 옵션을 추가할 수 있도록 하는게 좋을 것 같다. 처리 순서 변경 -> 선 개행, 선 패턴, 번역, 후 패턴, 후 개행을 선 패턴, 선 개행,...  
298 Talk XP3Dumper! [1] Hide_D 5000   2011-12-12 2011-12-24 02:57
기리기리랑 합치면 좀 재밌는게 나올 것 같아서 뜯어보고 있습니다. 결과물은 아마 내년(ㅋㅋㅋ)에 나올것 같네요  
297 Talk '잡담인데' [2] FrigateBird 23212   2010-02-22 2011-06-28 01:25
0.3에서 일부 게임이 코드를 잠시 none 해야 되는 녀석들이 있잖아염 코드를 잠시 슬쩍 어디 처 올리든 해서 단축키로 전환하면 좋겠는데  
296 Talk 어떤 정신나간 게임은 UTF-32를 쓰네요 -_-;; [1] Hide_D 19284   2010-01-30 2010-01-30 22:52
개발자가 미쳐서 Visual C++ 6.0에 iconv라도 섞어쓰는지 (아니면 gcc에 iconv... 던가) 내부 문자 처리를 UTF-32로 합니다 OTL  
295 Talk 뭐라고 설명해야할까요 -_-; 하여간 설명 file G2m 22598   2010-01-21 2010-01-21 19:17
 
294 Talk 문자열 길이에 대한 건의 file G2m 15608   2010-01-21 2010-01-21 18:44
 
293 Talk 문자열의 길이를 반영하는 '필터' [4] Hide_D 15027   2010-01-19 2010-01-22 01:28
문자열 길이가 고정되어서 포인터 바꿔치기를 통해서도 길이가 바뀌지 않는 것들이 있는데, 이놈들을 위해 길이를 반영하는 필터가 있으면 좋을것 같습니다. 인자로 반영할 메모리 주소 1. 모듈(메모리 주소) 기반 2. 레지스터 기반 으로 ATCode의 그것과 비슷...  
292 Archive [소스] ATPluginFrame 프레임워크 20100105 테스트 버전 file whoami 17914   2010-01-05 2010-01-05 19:47
 
291 Talk 0.3 Filter 간추려서 정리좀 해봤습니다. [1] file Hide_D 17301   2010-01-01 2010-01-02 05:08
 
290 Talk [소스] ATPluginFrame 프레임워크 20100101 테스트 버전 file whoami 17564   2010-01-01 2010-01-01 16:59