실행시 로고로 영문으로 아르테미스라고 뜬다.
용량이 큰 pfs 확장자 파일이 하나있다.
이러면 아르테미스 엔진이라고 생각하면됩니다.
//메인
55 8B EC 83 EC 18 89 4D E8 C7 45 FC 00 00 00 00 8B 45 08 89 45 F8
검색지점 // [esp+0x4] // ptrcheat
위 후킹지점에서 인자 두군데 추가 // ecx+0x100 // ecx+0xe4 // 스마트 or overwrite+ignore
인자 두군데가 폰트가 지나가는곳인데 커딕에서 폰트명을 바꿔주면 된다.
+혹은 pfs 파일을 hxd로 열어서 font로 검색후 폰트명만 살짝 변경시켜서 로드를 못시키게 해도 된다.
그러면 아랄 자체디버거에도 후킹 지점이 잡히기도하고 ecx관련 인자 두개느 사용안해도 된다.
이 방식은 이미 코드게시판에 같이 올려놓은 내용입니다.
//샘플
2013/09/27 출시 예정작인 サムライホルモン
작품을 봐봤을때 루비문자를 상당히 많이 사용하는데 이때 문자가 넘어오는 방식이
대사
루비
대사
이런식으로 대사 중간이 끊겼다가 루비문이 오고 다시 다음 대사가 오는 방식인데 루비문을 너무 많이 사용해서
번역이 아작난다. 그리고 강제 개행문을 종종 사용하는데 이로인해 개행이 꼬인다.
파일에서 스크립트를 읽고
메모리에 나눠서 넣고
읽어들인 스크립트를 지운다.
이때문에 스크립트 추적이 상당히 까다롭다.
대충 몇군데 찍어서 브포걸고 추적해서 어찌어찌 스크립트 로드 지점을 찾았다.
그리고 거기서 루비문 제거 / 강제개행문 제거를 해놓고 후킹은 기존 지점에서 했더니 괜찮더라는...
// 검색해서 함수 시작 위치를 JMP 문으로 하단으로 보내서 작업을 한다.
89 4D F8 8B 45 F8 8B 48 08 0F BE 11 85 D2
0068E92B PUSH EBP
0068E92C MOV EBP,ESP
0068E92E SUB ESP,8
// 원래 함수에서 JMP 문덮어쓰여진 지원진 명령문 다시 써준거
0068E931 CMP DWORD PTR DS:[ESP+C],『サムラ.00627920
0068E93A JNZ 『サムラ.00647236
// 약간 불필요한 반복이 있어서 거르는건데 딱히 필요하진 않을듯도 싶다.
0068E940 PUSHAD
0068E941 MOV EDX,DWORD PTR DS:[ECX+8]
0068E944 MOV EBX,EDX
0068E946 MOVZX EAX,BYTE PTR DS:[EDX]
0068E949 CMP AL,5B // [ 검사
0068E94B JNZ SHORT 『サムラ.0068E97C
0068E94D CMP DWORD PTR DS:[EDX+1],79627572 // ruby 라는 문자가 있는지 검사
0068E954 JNZ SHORT 『サムラ.0068E97C
0068E956 CMP DWORD PTR DS:[EDX+5],5D646E65 // end] 라는 문자가 있는지 검사
0068E95D JE SHORT 『サムラ.0068E976
0068E95F CMP DWORD PTR DS:[EDX+6],74786574 // text 라는 문자가 있는지 검사
0068E966 JNZ SHORT 『サムラ.0068E97C
0068E968 ADD EDX,0A
0068E96B CMP BYTE PTR DS:[EDX],5D // ] 검사
0068E96E JE SHORT 『サムラ.0068E979
0068E970 INC EDX
0068E971 CMP BYTE PTR DS:[EDX],0
0068E974 JNZ SHORT 『サムラ.0068E96B
0068E976 ADD EDX,8
0068E979 INC EDX
0068E97A JMP SHORT 『サムラ.0068E946
0068E97C MOV BYTE PTR DS:[EBX],AL
0068E97E INC EBX
0068E97F INC EDX
0068E980 TEST AL,AL
0068E982 JNZ SHORT 『サムラ.0068E946
[ruby text="のの"]노노[rubyend]
루비문이 이러한 형태를 취하기 때문에
[ruby 검색해서
] 문까지 제거 해버리는 거다.
Fixline 필터로 가능한 기능이긴한데 스크립트가 커서인지 후킹이 안되더라는..
0068E984 MOV EDX,DWORD PTR DS:[ECX+8]
0068E987 MOV EBX,EDX
0068E989 MOVZX EAX,BYTE PTR DS:[EDX]
0068E98C CMP AL,0D // 0D Hex 검사
0068E98E JNZ SHORT 『サムラ.0068E9A1
0068E990 CMP BYTE PTR DS:[EDX+2],81 // 0D Hex 뒤 2바이트가 81 Hex 와 검사
0068E994 JB SHORT 『サムラ.0068E9A1
0068E996 CMP BYTE PTR DS:[EDX-2],81 // 0D Hex 앞 2바이트가 81 Hex 와 검사
0068E99A JB SHORT 『サムラ.0068E9A1
0068E99C ADD EDX,2
0068E99F JMP SHORT 『サムラ.0068E989
0068E9A1 MOV BYTE PTR DS:[EBX],AL
0068E9A3 INC EBX
0068E9A4 INC EDX
0068E9A5 TEST AL,AL
0068E9A7 JNZ SHORT 『サムラ.0068E989
0068E9A9 POPAD
0068E9AA JMP 『サムラ.00647236
대사 ODOA ODOA
일경우 메세지창 전환
대사 ODOA
대사
일경우 강제 개행문
다만 스크립트 명령 제어문에서도 ODOA 는 사용되기때문에 일본 문자 상위 바이트를 앞뒤에 체크해서 ODOA 제거 를했다.
//샘플 サムライホルモン 체험판
b코드
{68E92B(55 8B EC 83 EC 08 3E 81 7C 24 0C 20 79 62 00 0F 85 F6 88 FB
FF 60 8B 51 08 8B DA 0F B6 02 3C 5B 75 2F 81 7A 01 72 75 62 79 75 26 81
7A 05 65 6E 64 5D 74 17 81 7A 06 74 65 78 74 75 14 83 C2 0A 80 3A 5D 74
09 42 80 3A 00 75 F5 83 C2 08 42 EB CA 88 03 43 42 84 C0 75 C2 8B 51 08
8B DA 0F B6 02 3C 0D 75 11 80 7A 02 81 72 0B 80 7A FE 81 72 05 83 C2 02
EB E8 88 03 43 42 84 C0 75 E0 61 E9 87 88 FB FF),647230(E9 F6 76 04 00
90)}
AT코드
HOOK(0x005fbc90,TRANS([ESP+0x4],PTRCHEAT),TRANS(ecx+0xe4,SMSTR),TRANS(ecx+0x100,SMSTR),RETNPOS(COPY)),ENCODEKOR,FORCEFONT(5)
폰트는 위에 제시된 두가지 방법중 아무거나 사용해보면됩니다.