FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EE70,TRANS(ESP+0xC,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x0024EAF0,TRANS(ESP+0x4,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x001D2AA0~0x000000AE,TRANS([ESP+0x4],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00275C20~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) DumpText{},DenyWord{},CustomDic{CDic},CustomScript{Write,Pass(-1),Cache} 대사(백로그 대사 포함): F3 0F 7E 01 8B 41 08 66 0F D6 02을 포함하는 함수의 첫 지점 이름(백로그 이름 포함): 85 FF B8 01 00 00 00 0F 44 F8을 포함하는 함수의 첫 지점 선택지: 8D 45 D4 8B CF FF 76 18 50 뒤 CALL 문 대사박스로 직접 나타내지지는 않지만 백로그에 나타나는 이름을 제외한 일부 텍스트: 6A FF 6A 00 83 C0 04 57 03 C8을 포함하는 함수의 첫 지점. Key사 도전과제 관련: 03 CE 3B C8 74 0A 6A FF 6A 00 50 뒤 CALL 문 invalid string position String을 참조하는 3, 4번째 함수 체크 후 역 추적. SiglusEngine.exe!0x0012E360 : C2 0C 00 81 FF FE FF FF 7F을 포함하는 함수. SiglusEngine.exe!0x001329F0 : 0F 42 D8 83 C8 FF을 포함하는 함수. 아래는 땜빵 분석필터 바이너리, 이후에 후킹 패턴에 변화줄 일이 있으면 참고할 것. {SiglusEngine.exe!0x0012E348(E8 D1 49 57 00 55 EB 0C 83 79 14 08 72 03 8B 01 C3 8B C1 C3 89 E5 EB 03 EB E6 90),SiglusEngine.exe!0x001329B4(E8 65 03 57 00 55 8B EC EB 35),SiglusEngine.exe!0x001329F0(EB C2 90),SiglusEngine.exe!0x006A2D1E(660 89 E5 EB 04 89 EC 61 C3 8B 45 24 8D 58 FB 8B 75 28 8B 4D 2C 85 C9 75 EC 8B 4E 10 83 7E 14 08 72 02 8B 36 85 F6 74 DD 56 51 85 C9 74 D7 31 C9 66 8B 04 4E 0F B7 D0 C1 EA 08 85 D2 74 05 42 84 D2 75 08 41 3B 0C E4 75 E7 EB BA 8B 74 E4 04 81 3E E2 30 C8 30 74 AE 8A 46 01 84 C0 74 A7 66 8B 46 02 66 3D 08 67 74 9D 8D 76 02 66 8B 06 66 85 C0 74 0B 66 3D 0C 30 74 8C 83 C6 02 EB ED 90 EB 03 90 EB 81 8B 74 E4 04 81 3E D7 30 ED 30 74 F2 EB F0)} DumpText{},DenyWord{},CustomDic{CDic},CustomScript{Write,Pass(-1),Cache} 메모: 개행이 생기면서 첫 번째 패턴이 변했다. 라인 메시지 백로그 번역 패턴 추가. 8B 46 50 01 86 E4 00 00 00 FF 75 0C FF 75 08 뒤 CALL 문 83 FF 02 74 09 8D 45 C0 50 앞 CALL 문 (binary) FF 71 68 FF 71 64 50 8D 45 10 50 뒤 CALL 문 8D 45 D4 8B CF FF 76 18 50 뒤 CALL 문 8D 4D 08 C6 45 FC 01 3B C8 74 0A 6A FF 6A 00 50 뒤 CALL 문 && C6 45 FC 00 83 7D EC 08 72 0B 앞 CALL 문 (binary) 03 CE 3B C8 74 0A 6A FF 6A 00 50 뒤 CALL 문 8D 4D D8 EB 50 83 F8 02 75 07 앞 CALL 문 (binary) C7 44 24 14 11 00 00 00의 위치 +4를 31으로 (개행, binary) {SiglusEngine.exe!0x0024E536(E8 25 FE ED FF E9 66 07 00 00),SiglusEngine.exe!0x0024ECA1(E9 90 F8 FF FF),SiglusEngine.exe!0x0024E636(E8 25 FD ED FF E9 4F 05 00 00),SiglusEngine.exe!0x0024EB8A(E9 A7 FA FF FF),SiglusEngine.exe!0x00150296(E8 05 28 08 00 E9 56 03 00 00),SiglusEngine.exe!0x001505F1(E9 A0 FC FF FF),SiglusEngine.exe!0x0014C30A(31 00 00 00)} FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001DE368~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024E536~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024EFD3~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024E636~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00275C20~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00150296~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) {SiglusEngine.exe!0x0014C30A(31 00 00 00)} FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001DE368~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024ECA1~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024EFD3~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024EB8A~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00275C20~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x001505F1~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) DumpText{},DenyWord{},CustomDic{CDic},CustomScript{Write,Pass(-1),Cache} {SiglusEngine.exe!0x0024E636(E8 25 FD ED FF E9 4F 05 00 00),SiglusEngine.exe!0x0024EB8A(E9 A7 FA FF FF),SiglusEngine.exe!0x00150296(E8 05 28 08 00 E9 56 03 00 00),SiglusEngine.exe!0x001505F1(E9 A0 FC FF FF),SiglusEngine.exe!0x0014C30A(31 00 00 00)} FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001DE368~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024EFD3~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x0024E636~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00275C20~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x00150296~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) 00A229F0 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001DE368~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->대사만 ->From +24EF55 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024ECA1~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->이름만############## FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EFD3~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->백로그 대사만############## FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->선택지 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EB8A~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->이름과 백로그 이름 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x00275C20~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->엔젤비트에서 도전과제 목록 지점. FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001505F1~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->대사박스에 나오지 않은 백로그 대사만.############## NEW FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001D2AA0~0x000000AE,TRANS([ESP+0x4],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->모든 백로그 대사. FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EAF0,TRANS(ESP+0x4,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x0024EE70,TRANS(ESP+0xC,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)) ->대사박스에 나오지 않은 경우를 제외한 모든 이름과 대사 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x00277EA4~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) ->싸그리 다오는 지점 FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EAF0,TRANS(ESP+0x4,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x0024EE70,TRANS(ESP+0xC,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x001D2AA0~0x000000AE,TRANS([ESP+0x4],UNICODE,ONEBYTE,ADDNULL,SMSTR)),HOOK(SiglusEngine.exe!0x002501AF~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) 8D 45 D4 8B CF FF 76 18 50 뒤 CALL 문 0AC2ADA-8F0000 백ㄹ FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x0024EAF0,TRANS(ESP+0x4,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)),HOOK(SiglusEngine.exe!0x0024EE70,TRANS(ESP+0xC,UNICODE,ONEBYTE,ADDNULL,SMSTR),RETNPOS(COPY)) 001D2AA0 00B67EA4-8F0000 00B681AD-8F0000 {SiglusEngine.exe!0x001D2A96(E8 C5 B8 F5 FF E9 67 00 00 00),SiglusEngine.exe!0x001D2B02(E9 8F FF FF FF)} FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001D2A96~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) 24EAF0~37B ESP+0x4 24EE70~349 ESP+0xC FORCEFONT(5),UNIKOFILTER(5),FONT(HYkanB,-13),HOOK(SiglusEngine.exe!0x001D2A96~0x00000005,TRANS([ESP],UNICODE,ONEBYTE,ADDNULL,SMSTR)) 31 C9 66 8B 04 4E 0F B7 D0 C1 EA 08 85 D2 90 90 41 3B 0C E4 75 EC 41 3B 0C E4 JNE SHORT 00F92D49 8B 36 51 85 C9 74 DC 31 C9 66 8B 04 4E 0F B7 D0 C1 EA 08 85 D2 74 05 42 84 D2 75 08 41 3B 0C E4 75 E7 EB BF 90 90 EB BB [EDI+0x10] 55 8B EC 53 8B 5D 08 船内アナウンス //00AFC756-8F0000 //00B67EA4-8F0000 00A4054D-8F0000 00AC2A21-8F0000 00AC2A42-8F0000 「まもなく鳥白町漁港に到着します」 //00AFC756-8F0000 //00B67EA4-8F0000 //00B682D9-8F0000 //00A2630F-8F0000 00AC2B02-8F0000 島の輪郭がはっきりと目にでき始めたころ。 00AC2B02-8F0000 「まもなく鳥白町漁港に到着します」 300C 307E 3082 306A 304F 9CE5 767D 753A 6F01 6E2F 306B 5230 7740 3057 307E 3059 300D 島の輪郭がはっきりと目にでき始めたころ。 5CF6 306E 8F2A 90ED 304C 306F 3063 304D 308A 3068 76EE 306B 3067 304D 59CB 3081 305F 3053 308D 3002 まもなくの到着を知らせるアナウンスが流れてきた。 307E 3082 306A 304F 306E 5230 7740 3092 77E5 3089 305B 308B 30A2 30CA 30A6 30F3 30B9 304C 6D41 308C 3066 304D 305F 3002 俺1人しかいなかったデッキには、次々に乗客が現れだした。 4FFA FF11 4EBA 3057 304B 3044 306A 304B 3063 305F 30C7 30C3 30AD 306B 306F 3001 6B21 3005 306B 4E57 5BA2 304C 73FE 308C 3060 3057 305F 3002 船内アナウンス 8239 5185 30A2 30CA 30A6 30F3 30B9 「まもなく鳥白島、鳥白町漁港に到着します」 300C 307E 3082 306A 304F 9CE5 767D 5CF6 3001 9CE5 767D 753A 6F01 6E2F 306B 5230 7740 3057 307E 3059 300D アナウンスがくりかえされる。 30A2 30CA 30A6 30F3 30B9 304C 304F 308A 304B 3048 3055 308C 308B 3002 改めて、前方に見える島を眺める。 6539 3081 3066 3001 524D 65B9 306B 898B 3048 308B 5CF6 3092 773A 3081 308B 3002 緑に覆われた低い山が連なり、海沿いにちらほらと家屋が並んでいる。 7DD1 306B 8986 308F 308C 305F 4F4E 3044 5C71 304C 9023 306A 308A 3001 6D77 6CBF 3044 306B 3061 3089 307B 3089 3068 5BB6 5C4B 304C 4E26 3093 3067 3044 308B 3002 数日あれば隅から隅まで回れそうな、小さな島。 6570 65E5 3042 308C 3070 9685 304B 3089 9685 307E 3067 56DE 308C 305D 3046 306A 3001 5C0F 3055 306A 5CF6 3002 考えてみれば、名前も知らずにいた。 8003 3048 3066 307F 308C 3070 3001 540D 524D 3082 77E5 3089 305A 306B 3044 305F 3002 鳥白島 9CE5 767D 5CF6 、か。 3001 304B 3002 85 D2 90 90 41 3B 0C E4 75 EC 55 8B EC CALL 00A1E360 CALL 00A1E360 CALL 00AC2AA0 00B3E536 00B3E636 00A40296 {00B3E536-8F0000(E8 25 FE ED FF E9 66 07 00 00), 00B3ECA1-8F0000(E9 90 F8 FF FF), 00B3E636-8F0000(E8 25 FD ED FF E9 4F 05 00 00), 00B3EB8A-8F0000(E9 A7 FA FF FF), 00A40296-8F0000(E8 05 28 08 00 E9 56 03 00 00), 00A405F1-8F0000(E9 A0 FC FF FF), 00A3C30A-8F0000(31 00 00 00)} 00ACE368-8F0000= 00B3E536-8F0000= 00B3EFD3-8F0000= 00B401AF-8F0000= 00B3E636-8F0000= 00B65C20-8F0000= 00A40296-8F0000= 00A3C30A-8F0000(31 00 00 00) 00ACE368-8F0000= 00B3ECA1-8F0000= 00B3EFD3-8F0000= 00B401AF-8F0000= 00B3EB8A-8F0000= 00B65C20-8F0000= 00A405F1-8F0000=