아 어느정도 결과는 나왔으나 다듬을수가없군요. 대략 바이트패스도 해야할듯싶고....
여하튼 지금까지 결과입니다.
기리기리버전 2.31.2011.615 패턴1
http://www.getchu.com/soft.phtml?id=729511 1/2 summer
매우 착한 녀석입니다. 메모리에 대사를 유니코드형식으로 전체적으로 가지고있고 ebx/ebp 에 포인터 형식으로 가지고
돌아다닙니다. 피시님이 공개하신 야매로 찾으면 빠르게 검색가능하더군요. 으헉 ㅡㅜ;;
기리기리버전 2.31.2011.615 패턴2
http://www.getchu.com/soft.phtml?id=727031 ものべの
http://www.getchu.com/soft.phtml?id=740657 中の人などいない!
http://www.getchu.com/soft.phtml?id=725093 DRACU-RIOT!
http://www.getchu.com/soft.phtml?id=705655 atled -everlasting song
대망의 UTF-8로 대사를 들고다니다가 psbfile.dll 에서 트랜스 명령이 떨어지면 본진에 와서 유니코드로 변경후 다시 디엘엘복귀
본진출동 커널 본진 이런식으로 돌아다닙니다.
요놈의 가장큰문제는 청소를 안합니다. 으 드러운놈들// 패턴이 없습니다. stage > 골목길 > face > 웃음
머이딴식 이더군요 다른 위치를 좀더 수색해봤으나 제 능력상에서는 죄다 거기서 거기더군요.
기리기리버전 2.31.2010.425 패턴3
http://www.getchu.com/soft.phtml?id=718738 さくら、咲きました。
http://www.getchu.com/soft.phtml?id=731868 Dolphin Divers
피시님 야매로 한번 해보긴했으나 걸리진 않더군요. 아직 건들진 않았습니다. sqirel 쪽 디엘엘에서 대사처리는 거의 다 해버리고
본진에는 f:\\블라블라\시나리오.scx 이런식으로 넘겨주더군요. 패턴2번 두드리느라 이놈은 힘이딸리니 포기상태.
==================================================================패턴1
픽스라인 문의 입니다. 유니코드에서 번역안함으로 이름값을 보냈을시 위와같이 출력됩니다.
혹 픽스라인에서 돌려보낼때 유니코드가 아닌 아스키로 보내는건 아닌지 의심이 들어서 올려봅니다.
피시님 야매표.
ENCODEKOR,FORCEFONT(15),HOOK(KAGParserEx.dll!0x0000B355,TRANS(EDX,PTRCHEAT,UNICODE),RETNPOS(COPY))
더러운 내꺼
ENCODEKOR,HOOK(KAGParserEx.dll!0x0000E1BB,RETNPOS(COPY),TRANS([ebx+0x5c],PTRCHEAT,UNICODE)),FORCEFONT(15)
KoFilter{},DenyWord{},DumpText{},CustomDic{CDic}
ATkiri 와 디나이워드를 어떤식으로 처리해야하는지 픽스에선 어떻게 해야하는지 전체적으로 감이안옵니다.
지금 올려 진걸로하면은 몇명 음성출력안되고 루비문 어버버해버리는데 테스트용이니 참고해보세요.
찾았던 형식은 대본스크립트 메모리 검색시 걸리는거 브포걸고 따라다니면 되더군요. 그래서
66f420 esi / 66f6e0 [ebx+5c] 요두군데를 베이스로 잡고 작업을했는데 첫째문장 너무 들락날락거려서 결국 디엘엘로 들어가서
카그디엘엘 E1BB 로 가게되었습니다. 근데 요놈은 그냥 피시님표 야매가 빠르더군요.
======================================================================
청소 드럽게 안하는 UTF-8을쓰는 패턴2입니다. 저러면서 뻗어버려요 왜 뻗는지도 모르고 미치는줄알았습니다.
요렇게 한 며칠 튕기는것만 보다가 오늘에야 문장하나를 집어넣었씁니다.
음영된곳이 추가된 문장입니다. 그냥 뒤에4바이트 깔끔하게 지워버렸습니다. 어차피 쓰레기인데 청소를 안해서 아랄 뻗는거
하악 요문장 하나 넣기가 어찌나 어렵던지. 원래는 본진에서 처리할려했는데 본진은 너무 붙어있어서 문장 넣기가 힘들더군요.
여기서 또 의심되는게 분명 esp+0x8에서 길이수정을 하면은 수정이 되어야하는데 수정이 안됩니다.
유니코드에서는 작동이 안되는건지 넣는법이 틀린건지 한번 테스트해주시길 바랍니다.
길이값만 수정되면 얼추 쓸만한 코드가 될것같습니다.
모노베노는 패턴에 잘짜여진것같습니다. 디나이 수정좀 깔끔하게 하고 길이값만 어떻게 해결되면 바로쓸수있겠더군요.
ENCODEKOR,HOOK(psbfile.dll!0x000019B8,TRANS([ESP+0x4],UNICODE,PTRCHEAT),RETNPOS(COPY)),FORCEFONT(15)
필터
DumpText{},DenyWord{}
psbfile.dll_19b8 << 게임폴더에서 > 플러그인폴더 > 이름변경 뒤에 _198b 지우고 사용하시면됩니다.
DenyWord.ini << 에이비시디 다넣고 생각나는거 몇개넣어본겁니다. 특정 문자 몇개만 있으면 대충 될듯싶습니다.
알콜사 신작 中の人などいない! 입니다.
패턴이 없습니다. 더럽습니다. 대충 바이패스 10넣고 로드할때는 바이패스 20넣으면 그럭저럭 돌아갑니다.
패턴분석좀 해주세요.
ENCODEKOR,HOOK(psbfile.dll!0x000019B8,TRANS([ESP+0x4],UNICODE,PTRCHEAT),RETNPOS(COPY)),FORCEFONT(15)
필터 로드시 20 / 구동시 10으로해서 테스트해보세요.
DumpText{},DenyWord{CUT(20)}
psbfile.dll_19b8 << 게임폴더에서 > 플러그인폴더 > 이름변경 뒤에 _198b 지우고 사용하시면됩니다.
DenyWord.ini << 에이비시디 다넣고 생각나는거 몇개넣어본겁니다 다듬어야하는데...
7월 신작 atled -everlasting song 입니다. 요놈도 패턴은 없습니다. 바이패스10정도하면 요런화면은 보지 않으실겁니다.
요놈은 디엘엘이 좀 변경되어서 19e1번지에서 후킹을 걸어줬습니다. 문장넣어서 19e8
ENCODEKOR,HOOK(psbfile.dll!0x000019E8,TRANS([ESP+0x4],UNICODE,PTRCHEAT),RETNPOS(COPY)),FORCEFONT(15)
필터
DumpText{},DenyWord{CUT(10)}
psbfile.dll_19e8 << 게임폴더에서 > 플러그인폴더 > 이름변경 뒤에 _198b 지우고 사용하시면됩니다.
DenyWord.ini << 요놈도 대충 넣은겁니다. 바이패스사용하고 길이값만 수정되면 코드화해도 될듯싶더군요.
드라큐리옷입니다. 수정 dll을 넣을시 걸립니다 ㅡㅡ;; 요놈만 딱걸리더군요.
본진 수정을 하든가 해야 깔끔해질텐데 기본적으로 이놈은 약간은 치우고 삽니다. 어느정도 돌아가다 튕기던가 할 겁니다.
ENCODEKOR,HOOK(psbfile.dll!0x000019E1,TRANS([ESP+0x4],UNICODE,PTRCHEAT),RETNPOS(COPY)),FORCEFONT(15)
필터
DenyWord{CUT(10)},DumpText{}
DenyWord.ini 요놈도 패턴에 답이없더군요. 청소를 본진에서 시켜주든가하고 길이수정하고 바이패스쓰면 코드화될듯싶습니다.
===========================================================
아 드럽게 튕겨나오는데 덤텍에서 이유도 안알려주고 튕기고 그냥 조작없이 유니코드만 눌러서 볼려구해도 튕기고
튕튕튕튕튕튕튕튕 정신건강에 매우 해롭더군요.
psbfile.dll 에서 검색할시에는 명령문검색에서
XOR ECX,ECX
요놈에서 CALL EAX 를 찾아보시면되겠습니다.
본진에도 후킹 가능한 곳은 있씁니다. 머 콜로 넘겨지는 부분이긴합니다.
ENCODEKOR,HOOK(0x0066F728,TRANS([ebp+0xc],PTRCHEAT,LEN([EBP+0X10]),UNICODE),RETNPOS(COPY)),FORCEFONT(15)
바로 66F728 지역에서 [EBP+0XC] 지역입니다. 위에 4개모두 여기서 가능합니다. 다만 명령문이 좀더 많이 지나가는것 같더군요.
기리기리버전 2.31.2011.615 의 대사는 모두 66F6E0(함수시작부분)을 지나갑니다. 거기서 좀더 아래 66F728이 전 후킹지역으로
좀더 낫더군요. 그리고 66F420 이지점에도 모두 지나가긴합니다만 패턴1은 대사를 가지고오고 패턴2는 그냥 텍스트 지나간다고만
알려주더군요.
그리고 한곳더 psbfile.dll 에서 트랜스 시키기위해서 본진에 보내면 UTF-8 > 유니코드 > 리턴
요때 본진에서 나가는 주소가 67CE8A 이곳인데 여기에서 작업을 걸어도 되긴하겠더군요.
기리기리버전 2.31.2011.615 은 위에 주소가 모두 동일합니다. (psbfile.dll 요놈은 약간 틀립니다)
============================================================
============================================================
3번째 패턴은 아직 야매짓 한번해보고 건들지도 못하겠군요.
기리기리버전 2.31.2010.425 패턴3
요놈은 문자길이를 바이트로 측정하더군요. 디버거 자체조작으로 esp+0x8 에서 가능한데 적용은 못시키겠더군요.
Dolphin Divers
さくら、咲きました。
FORCEFONT(15),ENCODEKOR,HOOK(sqlite3.dll!0x000285B6,TRANS([ESP+0x4],PTRCHEAT,UNICODE,LEN([ESP+0X8])),RETNPOS(COPY))
DenyWord{}
기본적으로 유니코드형으로 서치하면 서치가 됩니다. 다만 처음 서치할시 잘 안잡힙니다.
클릭하고 로드하고 여기로드하고 저기로드하고 로드를 계속 하다보면 언젠가는 잡힙니다.
sqlite3.dll 요놈에서 대사처리는 유니코드형으로 되고 특문은 아스키값으로해서 따로 도는것 같더군요.
베이스는 6DEC0
55 8B EC 57 56 8B 75 0C 8B 4D 10 8B 7D 08 8B C1 8B D1 03 C6 3B FE 76 08
바이너리 서치해서 두번째 걸리는 놈입니다.
후킹할만한 곳은 285b6
8B FD 8B 76 18 8B CF 2B CE 51 6A 00 03 F3 56
바이너리 서치해서 위쪽 콜문
길이수정만 어찌 해결하면 어느정도 쓸만해지긴 할듯싶습니다.
돌핀다이버즈 같은경우 이름이 찌그러지지 않아서 조금 의심이 들고.
さくら、咲きました。같은경우 찌그러지는게 있더군요.
============================================================
대충 지금까지 결과 보고였습니다.
한 5개를 한꺼번에 만지다보니 정신도없고 튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕튕
지금 올려놓은 걸로 테스트해보실분은 테스트해보시구요. 패턴분석을 못하겠씁니다.
테스트용입니다. 튕길거에요. 무지막지하게 견뎌내시고 패턴이나 디나이워드 쓸만한것좀 건져보세요.
혼자는 도저히 못하겠네요. 으헉. 그리고 길이값 한번 넣어보시고 성공시키시면 좀 알려주세요.
디버거상태에서 수동 변경으로 해봤을시에는 제대로 길이값 수정된만큼 출력이됐는데 아랄로는 적용을 못시키겠더군요.
알콜사 때문에 시작한건데 이젠 정말 정내미가 떨어지는구나.
공은들였으나 현재 쓸만한건 하나도없는상태군요.
__________________________________________________________________________
간단요약.
66F420 검색
패턴1 : 스크립트형식 오면 > 피시님표 야매
패턴2 : 선언문이 온다 (예 'text')> psbfile.dll > 커맨드서치 > XOR ECX,ECX > CALL EAX
패턴3 : 검색된 위치가 함수시작부분이 아니다 > sqlite3.dll > 바이너리 서치 >
8B FD 8B 76 18 8B CF 2B CE 51 6A 00 03 F3 56 > 위쪽 콜문.
__________________________________________________________________________
- suspect1.JPG (194.6KB)(164)
- DenyWord.ini (288Bytes)(67)
- CustomDic.txt (824Bytes)(65)
- utfs.JPG (211.3KB)(159)
- fixbin.JPG (90.6KB)(156)
- needfix.JPG (133.6KB)(164)
- problem1.JPG (63.2KB)(159)
- fix1.JPG (131.8KB)(192)
- fix2.JPG (135.3KB)(158)
- 제목 없음.JPG (249.0KB)(66)
- psbfile.dll_19b8 (180.0KB)(83)
- DenyWord.ini (939Bytes)(75)
- DenyWord.ini (860Bytes)(66)
- psbfile.dll_19e8 (180.0KB)(70)
- DenyWord.ini (850Bytes)(74)
- cc1.JPG (167.7KB)(175)
- change2.JPG (171.5KB)(184)
- 제목 없음.PNG (125.5KB)(175)
운이 좋았다고 봐야할것같아요.
썸버1/2 요놈만 특이하게 스크립트 들고다녀서 추적이 됐었는데.
썸머 다음에 모노베노 시도해서 위에 써진 주소로 베이스잡고 했더니 걸리더군요.
더러운 UTF-8
아 그리고 기리기리버전 2.31.2010.425 (예)돌핀다이버즈 카그없는놈
요거 야매로 안되나요?
1/2 summer를 하면서 느낀건데.. 인물들의 음성이 안나오는 문제는 다음과 같은 것인거 같습니다.
@一葉 voice="0050002"
40 88EA 9774 20 76 6F 69 63 65 3D 22 30 30 35 30 30 30 32 22
【一葉】『しょうがないですね、ついでにモールを見て回りますから、先に行っててください』
위 문구에서 살펴볼 때 @一葉 voice="0050002" 의미는 다음과 같다고 생각됩니다.
"만약 다음 대사문구에서 一葉란 단어가 등장하면 voice="0050002"의 음성을 추가해라"
왜 이런생각을 하게 되었느냐면은, 그냥 한글로 번역하면 음성이 등장하지 않는데, 대사부분을 미번역하면
음성이 나오게 됩니다.
즉 이렇게 미번역되는 경우에는 음성이 나오게 되더군요..;; 이제 다음번에 연구해야 될 부분은 정확히 어떤 문자열이 나왔을 때
음성이 나오게 되는지랑, 특정 대사문구에서 음성이 나오게 되는 문구는 미번역 시키고, 나머지는 번역시키는 방법을 알아봐야 할 것
같습니다.
실험결과 인물들의 대사는 커딕 작업을 통해서 불러낼 수 있다는 것을 알았습니다.
즉 이름 부분을 미번역 처리하면 음성이 나오게 되는것 같습니다.
일례로
여동생의 이름인 【一葉】를 커딕 작업을 통해서 【一葉】으로 번역하도록 처리하면 다음과 같이 음성이 나오게 됩니다.
즉 이름부분이 원래 일본어로 처리되면, 해당 voice 명령어가 제대로 작동하게 되어 음성이 나오게 되는 것입니다.
이제 앞으로 해야할 일은 모든 인물들의 이름이 미번역 되도록 처리하는 일이 남은것 같습니다.(즉;; 끝까지 클리어 해봐야 하겠네요)
디나이 부분에 있어서는 [, ] 기호를 넣으면 안된다고 느끼는게 대사창에서 보면 특정 용어에 대한 주석설명으로 [ ~~] 기호를 쓰고 있습니다.
그래서 영어 명령어를 번역 안하기 위해 디나이를 쓰는 것이기 때문에 영문자로 디나이를 잡는것이 더 편한거 같습니다.
예를 들어
Data8=a
Data9=e
data10=i
data11=o
data12=u
data13=y
이렇게 영어 모음에 + y 넣어서 디나이로 잡으면 모든 명령어가 커버 됩니다.
1/2 summer에 필요한 사용자 사전과 디나이워드 첨부합니다.
여기서 사용자 사전의 단어중 真, 叶 두 글자는 현재 커딕에서 같은 글자로 나오지를 않습니다.(?로 표기됩니다.) 따라서 2명 만 빼고는
모두 음성이 나오는걸 확인했습니다.
기리기리의 경우, 스크립트 내부 명령어의 설정이 '자유'입니다.
제작사에서 자기 멋대로 명령어를 짤 수 있어요. 일정한 규칙따윈 전혀 없고요.
그렇기에 디나이가 엔진에 통일성을 가지기 무척 힘들겁니다.
애시당초 스크립트, 정확히는 게임 내부 대본에 쓰이는 모든 명령어는 게임 제작시 게임 개발자가 멋대로 정한 '매크로'라는명령어 단위로 구성되거든요. 그 매크로는 사용자 정의 형식이고요.
뭐..... 도움이 될지 안될지는 모르지만 그냥 끄적여 봤습니다.
*모노베노 같은경우 대본 내 명령어체계가 쬐까 더럽습니다.
**알콧 허니컴쪽 스크립트 방식은 그나마 깔끔하긴한데, 기호를 시스템 명령어로 지정해놓은지라 잘못처리하면 골좀 썩으실듯 합니다.
***뭐 사실 이 지식은 한글패치 프로그래밍 때문에 알고있는 지식인지라 조금 다를지도 모르겠군요 [......]
http://polaris.aralgood.com/index.php?document_srl=1942021&mid=polaris_QnA 에 썻던 내용인데요..
즉 커스텀 딕으로 원래 한자를 번역했을 때도 원래 한자로 나오게 하는 방법에 대해서.. 현재의 아랄 + 이지트랜스 콤비는
真, 叶 두 글자를 커버하지 못한다는 것을 물어봤었던 거였어요...(대괄호 하고 않하고, [,] 넣고 안넣고 랑 상관이 없었습니다.)
그냥 아무 대사나 같다가 해 봐도 위의 두 글자는 다시 동일 한자로 번역하지 못합니다. 그냥 ?라고 번역이 됩니다...
요게 문제인것이 보통 기리기리 2.31 버전에서는 특정 문자열로 기능을 맞추는 경향이 있는것 같습니다.
즉 voice= 叶. ~~~~~~ 머 이런식으로 명령어가 나오면, 대사에 叶 한자가 꼭 나와야만 음성이 나옵니다.(괴랄합니다.;;)
그래서 원래 일본어가 번역이 되도 그냥 원래 단어로 나오게 하는 부분이 필요합니다.(너무 복잡하게 썼나 싶네요 ㅠㅠ. 죄송함돠)
다시 그래서.. 1/2 섬머에서는 모든 등장인물들 커딕 작업을 했을 때 안되는 글자가 위의 두 글자 真, 叶입니다... 따라서
실제 아랄로 플레이 할 때 두 케릭터의 음성을 듣지 않거나, 두 케릭터의 대사 메세지는 전부 번역하지 않는 방법으로 플레이 하면
되긴 합니다...
그리고 이것과는 딱히 상관 없는 대목인데.. 예를 들어 fixline에서 真 글자를 '번역 않함' 으로 처리하면 원래 번역 안해야 정상인거
아닌가요?... 그냥 번역해 버리네요.. 기리기리의 문제일 수도 있고.. ? 암튼 잘 모르겠습니다.;;
원사이드썸머 dll 수정
첫번째 함수는 문장만 오는 함수를 발견을했는데 한글자씩 체크를 하는곳이라 중복번역이 일어나는데
이쪽 함수에서는 문자하나 체크하고 eax 카운트를 먹여서 최초에 오는놈만 골라서 한번 후킹하기위해
cmp eax,0을 넣었다.
나머지는 이름단락 체크해서 아랄로 번역되어서 포인터바꿔치기 되어있는 메모리에 원본에있는 이름을
뒤에서부터 덮어쒸우기하고 포인터가 가리키는 주소를 덮어쒸어져서 당겨진곳을 가리키게했다.
요거 생각하는데만 반나절이 걸린것같다.
머 이러한 이유로 아랄 안쓰면 원본에 원본을 쓰니 종결문으로 넣어준 3010이
덮어쒸어져버려서 네버엔딩 쓰기하다가 튕긴다 야호!!
두번째 함수는 선택문이 [ ] 요런식으로 쌓여있더라...
나는 일부러 [ 걸러지고 오는데로 노린건데.. 그래서 그냥 요놈도 [selad 체크해서 요놈만 번역하게했다.
어떻게 수정해야할까 생각하는 반나절..
ebx+5c 를 ebp+5c로 오타해서 반나절 고생...
갑자기 선택지 [ ] 요런식으로 튀어나와서 조금 고생....
한가지 알게된 사실은
저기 dec ecx 부분은 쓰레기 명령문이다.
후킹지역이 함수끝. 함수뒤에는 황량한 대지가 있으니 튕기더라는거 콜문이 삽입되면서 이런한 일이 발생된다는걸
알게되었다..
int3이 발동되는것도 처음 보게 되었다. 그냥 써놓으니 알아서 브레이크걸리더라는.. 신기신기
코드게시후에 아랄 전격 업데이트.................................... 이건머지.. 가슴이...
다행히 어제 빨리자서 오늘에야 업데이트 소식을 알았다. 뻘짓했다는 사실을 하루늦게 알게된걸로 만족하자..
저도 도와드리고 싶지만 너무 어려운 레벨이어서.. 응원만 합니다. ㅠㅠ