본문 바로가기

쓰기

가령 모듈 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/1fa/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
129 Talk 아랄3 디버깅이 말이죠... [2] file JKLeetro 35689   2010-04-20 2010-10-20 07:18
 
128 Talk FixLine 버그 발생 [1] Hide_D 23382   2010-04-25 2010-05-01 22:19
!梨桜 01 21 979C 8DF7 을 처리하기 위해 %01%21{T} 로 설정하면 FixLine이 씹고 다음 데이터를 뱉지 않음 %21{T} 로 설정하면 아예 '닥치고 튕김' 지정된 문자열 + 임의의 문자열 구조로 했을때 버그가 있는듯 최대한 빨리 수리를 -_-;  
127 Talk 0.3님 제발 자비좀[.....] [2] G2m 29951   2010-05-05 2010-05-23 06:21
디에스 이레 뚫으면서 알게된건데 일단 히데찌 말로는 관리자씨가 말하길 0.3 유니코드 완벽이염 ㅇㅇ 라고는 하는데 그 뭐랄까 문장 스크립트 형식이 00 30으로 시작하는 놈은 아랄이가 고대로 씹어 드셔서[............] 이걸 픽스로 잡아도 조트망이고 흠. ...  
126 Talk ATS의 문제점.. Hide_D 23578   2010-05-15 2010-05-15 19:18
0.2의 그 복잡하고 어려운 방식은 일단 뒤로 두고 0.3의 ATS가 갖는 허점이 1. 첨부파일, 필터 경로들을 [일일히!] 입력해야 한다. 2. 코드가 갱신되었을 때 대처할 방법이 전혀 없다. 일일히 입력하는 것 자체는 나쁘지 않은데, 2번 때문에 심각한 문제가 됩...  
125 Talk 0.3님 제발 자비좀[.....] file 아무개 31299   2010-05-23 2010-05-23 06:20
 
124 OtherFiles [프로그램, 소스] AT 환경 수집기 20100526 [1] file Hide_D 30118   2010-05-26 2016-05-28 15:42
 
123 OtherFiles EncodeKor(한국어 <-> 일본어 문자 코드 대치) 재 작성 프로젝트! [16] file Hide_D 75319   2010-05-29 2010-10-25 09:55
 
122 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: 이 두놈...  
121 Talk 번역 모듈로 인터넷을 이용하는 방법. Hide_D 30170   2010-06-04 2010-06-04 23:54
굳이 번역기를 이지트랜스를 쓰지 않아도 아랄트랜스를 사용하는 방법이 필요합니다. 네이버 번역 등을 인터넷으로 접근해서 쓰는 방법으로 번역 모듈을 만들어 보겠습니다.  
120 OtherFiles AralTrans.exe 파일 살짝 수정했습니다. + 아랄씨 계시면 보세요 file Hide_D 28477   2010-06-07 2010-06-07 05:11
 
119 OtherFiles [소스] Test Network + Google Translate Source - 2 file Hide_D 26517   2010-06-19 2010-06-19 09:59
 
118 Archive [플러그인] GoogleTrans 테스트 버전 (20100620) file Hide_D 26601   2010-06-20 2010-06-20 16:00
 
117 Talk [0.2] OnPluginInit단에서 스레드를 만들 때 [회피법] Hide_D 27118   2010-06-23 2010-06-23 02:10
http://lab.aralgood.com/board_documents/3202 에 나온대로 플러그인이 초기화되는 시점이 '안전하지' 않기 때문에 Init 단에 스레드를 추가하기가 어려운데, 이를 위한 회피 방법입니다 [OnInitThread에 AfxBeginThread를 사용하면 '무조건' 얼어버리는 현상...  
116 Talk AT 0.2에서 내부 버퍼가 4096을 넘을 수 있어야 합니다. [1] Hide_D 34245   2010-07-13 2011-03-04 05:56
ATCode인지 뭔지 내부 버퍼 길이가 4096바이트로 제한되어있어서 그보다 큰 길이가 들어올 경우 문제가 생깁니다. 길이를 제한하는 플러그인들은 모두 대용량의 텍스트도 받아올 수 있도록 처리해야할 것 같습니다.  
115 Talk ATCustom - 함수 Reference [47] Hide_D 103937   2010-07-20 2010-08-28 04:59
AralTrans의 Algorithm Plugin ATCustom의 함수 목록입니다. - 문서 상태 - 기본 함수 : 변경 중 변경 확률 보통 고급 함수 : 변경 중 변경 확률 높음 - 기본 함수 목록 - 핵심적인 기능을 가지거나 내부의 C++ 코드를 사용해야만 하는 함수의 목록입니다. 메...  
114 Talk ATCustom - 프로젝트 소개 [8] Hide_D 32701   2010-07-22 2011-07-14 11:21
- 소개 - ATCustom은 사용자가 직접 메모리 훅 및 메모리 작업을 할 수 있는 Script 기반 Algorithm 플러그인입니다. Google Chrome에 탑재된 v8 JavaScript Engine을 사용하여 JavaScript 파일을 파싱하여 동작하며, ATCustom에서 제공하는 API를 사용하여 작...  
113 Talk JSCustom의 초기 골격 코드를 SVN에 커밋했습니다. [1] Hide_D 33949   2010-09-18 2010-10-25 09:57
지금 안된 부분이.... 1. 고수준 함수, 고수준 보조 함수 구현 ( http://wiki.aralgood.com/index.php/JSCustom/FunctionReference ) 2. 아랄트랜스 0.3버전용 함수 구현 3. 아랄트랜스 플러그인 규격과 v8Wrapper 모듈의 연결 4. UI 정도네요. 올리긴 했지만 ...  
112 Talk [뻘글] 요새 프로텍터가 하도 무서워서 Hide_D 22878   2010-10-26 2010-10-26 00:15
대상 클라이언트에 최소한의 Injector만 '꽂아'두고 실제 동작은 '서버'에서 Injector와 IPC만으로 구동하는 형식은 어떨까 싶군요. Injector에서 '메모리' 입출력 관현 함수와 기본 WinAPI에 사용되는 DLL 로드(이건 위험하지 않으니까!)와 실제 WinAPI를 실...  
111 Talk KiriKiri 텍스트 파싱 개선 프로젝트! Hide_D 22403   2010-10-28 2010-10-28 00:21
필요가 생겨서[!] 이제 좀 개선을 시켜볼 생각입니다. 우선 문제가 되는 곳은 text=""겠군요  
110 Archive [소스, 플러그인] Cache 테스트버전 101127 file Hide_D 19949   2010-11-27 2010-11-27 04:19