* updated by Kii Ali, 12-11-2001 ftp://ftp.nsysu.edu.tw/cpatch/faq/fix/fix_eudora22.txt Subject: 解決 Eudora Pro 2.2 各項中文不相容問題記錄 --- 目錄 ==== 1.解決某些中文字在標題首字上會出現亂碼問題,例如"綽"等等 2.解決某些中文字在標題尾字上會出現亂碼問題,例如"鼓"等等 3.解決建立資料夾時,系統會將大寫英文轉換為小寫問題 4.解決信箱(資料夾)存檔中文不相容問題 (如建立 '成功'),並增加支援長檔名建檔 5.解決附加檔案不相容中文問題 (含 '\' 和 '|' 字元問題) 6.解決標題(主旨)和寄件人會顯示 Base64 亂碼問題 7.解決信件內容會顯示 Base64 亂碼問題 8.解決中文附檔會建立 Base64 亂碼問題 9.檔案下傳處 9.1 修改文件 9.2 原始英文檔 9.3 單獨修正中文不相容問題 (保留原文) 10.有問題歡迎來信指教 1.解決某些中文字在標題首字上會出現亂碼問題,例如"綽"等等 ======================================================== 檔案 : Eudora.exe 搜尋 : 83 E0 08 85 C0 74 03 46 75 CF 8B (共一組) 修改 : 80 F9 20 75 05 90 90 46 EB -- -- 0FBE0E MOVSX ECX,BYTE PTR [ESI] 8B15F8DB4A00 MOV EDX,[004ADBF8] 33C0 XOR EAX,EAX 668B044A MOV AX,[ECX*2+EDX] 83E008 AND EAX,08 85C0 TEST EAX,EAX -----> 80F920 CMP CL,20 7403 JZ 0042C455 7505 JNZ 0042C455 46 INC ESI 90 NOP 75CF JNZ 0042C424 90 NOP 8BFE MOV EDI,ESI 46 INC ESI 46 INC ESI EBCF JMP 0042C424 8BEE MOV EBP,ESI 803E00 CMP BYTE PTR [ESI],0 7437 JZ 0042C496 2.解決某些中文字在標題尾字上會出現亂碼問題,例如"鼓"等等 ======================================================== 檔案 : Eudora.exe 搜尋 : 02 8B EE 46 (共一組) 修改 : 00 -- -- -- 83E008 AND EAX,08 85C0 TEST EAX,EAX 7502 JNZ 0042C490 8BEE MOV EBP,ESI 46 INC ESI 803E00 CMP BYTE PTR [ESI],0 75C9 JNZ 0042C45F 3.解決建立資料夾時,系統會將大寫英文轉換為小寫問題 ================================================== 檔案 : Eudora.exe 搜尋 : F9 5A 7F (共一組) 修改 : -- -- EB 8A08 MOV CL,[EAX] 80F941 CMP CL,41 7C0A JL 00467CD5 80F95A CMP CL,5A 7F05 JG 00467CD5 80C120 ADD CL,20 8808 MOV [EAX],CL 40 INC EAX 803800 CMP BYTE PTR [EAX],00 4.解決信箱(資料夾)存檔中文不相容問題 (如建立 '成功'),並增加支援長檔名建檔 ========================================================================== High Byte = A1h∼FEh,Low Byte = 40h∼7Eh、A1h∼FEh 檔案 : Eudora.exe a.搜尋 : 3E 3F 5B (修改過濾字元,共二組) 修改 : -- -- 00 b.搜尋 : 7F 20 00 75 (跳開檔名長度檢查,共一組) 修改 : -- -- -- EB c.搜尋 : E8 60 CB 05 00 (建立檔案部份,將流程轉向新增判斷副程式,共一組) 修改 : -- BE D4 06 -- d.搜尋 : E8 33 8D 05 00 (尋找檔案部份,將流程轉向新增判斷副程式,共一組) 修改 : -- 91 96 06 00 e.搜尋 : B9 5C 00 00 00 (在程式中挪出一塊記憶體供撰寫程式用,共一組) 修改 : E9 38 01 -- -- f.搜尋 : BA 2F 00 00 00 8A 07 3A C1 75 0E 38 4F 01 74 21 3A C1 75 05 38 57 01 74 18 3A C2 75 0E 38 4F 01 修改 : 57 8B 7C 24 08 33 C0 83 C9 FF F2 AE 41 F7 D9 4F B0 5C FD F2 AE 80 3F A1 73 F9 47 8B C7 FC 5F C3 (修改無用的程式碼,另外寫一個較聰明的副程式,增加對 '\' 字元的判斷,共一組) c.6A5C PUSH 5C --------> '\' 53 PUSH EBX E860CB0500 CALL 00465794 --> 將流程轉向新增判斷副程式 CALL 004760F2 d.6A5C PUSH 5C --------> '\' 8D857CFEFFFF LEA EAX,[EBP-0184] 50 PUSH EAX E8338D0500 CALL 00465794 --> 將流程轉向新增判斷副程式 CALL 004760F2 f.57 PUSH EDI 8B7C2408 MOV EDI,[ESP+08] 33C0 XOR EAX,EAX 83C9FF OR ECX,-01 F2AE REPNZ SCASB 41 INC ECX F7D9 NEG ECX 4F DEC EDI B05C MOV AL,5C --------------> '\' FD STD F2AE REPNZ SCASB 803FA1 CMP BYTE PTR [EDI],A1 --> 判斷是否為中文字? 73F9 JAE 00476105 47 INC EDI 8BC7 MOV EAX,EDI FC CLD 5F POP EDI C3 RET 5.解決附加檔案不相容中文問題 (含 '\' 和 '|' 字元問題) ===================================================== High Byte = A1h∼FEh,Low Byte = 40h∼7Eh、A1h∼FEh 檔案: Eudora.exe a.搜尋 : 5C 2F 3A 2A 3F 3C 3E 7C (修改過濾字元,共一組) 修改 : 09 -- -- -- -- -- -- 00 b.搜尋: 75 20 3C 20 7C 1C (修改檔案過濾判斷,共二組) 修改: EB 04 -- -- -- -- c.搜尋: E8 12 7B 01 00 修改: -- 70 84 02 -- (寄信時的檔名檢查副程式,現在將流程轉向執行相容中文字的副程式,共一組) d.搜尋: E8 4C 1F 04 00 修改: -- AA 28 05 -- (收信時的檔名檢查副程式,處理同上將流程轉向,共一組) b.8A06 MOV AL,[ESI] A880 TEST AL,80 7520 JNZ 004754CF 3C20 CMP AL,20 7C1C JL 004754CF c.6A5C PUSH 5C --------> '\' 8975FC MOV [EBP-04],ESI 8B8524FFFFFF MOV EAX,[EBP-00DC] 8B4D08 MOV ECX,[EBP+08] 51 PUSH ECX 8945DC MOV [EBP-24],EAX 8975D0 MOV [EBP-30],ESI E8127B0100 CALL 00465794 --> 將流程轉向新增判斷副程式 CALL 004760F2 d.6A5C PUSH 5C --------> '\' 8D85BCFDFFFF LEA EAX,[EBP-0244] 50 PUSH EAX 8BFE MOV EDI,ESI E84C1F0400 CALL 00465794 --> 將流程轉向新增判斷副程式 CALL 004760F2 6.解決標題(主旨)和寄件人會顯示 Base64 亂碼問題 ============================================== 檔案: Eudora.exe a.搜尋 : E8 B9 FF FF FF FF F2 AE F7 D1 49 修改 : -- -- -- -- -- -- E8 01 21 04 00 (顯示寄件人部份,將流程轉向新增解碼的副程式,共一組) b.搜尋: FF FF B9 FF FF FF FF F2 AE F7 D1 49 修改: -- -- -- -- -- -- -- E8 D9 1E 04 00 (顯示主旨部份,處理同上將流程轉向,共一組) c.搜尋: 02 00 83 C4 08 85 C0 74 23 8D 78 01 B9 FF FF FF FF 2B C0 F2 AE F7 D1 修改: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- E8 2A 9B 03 00 41 (主旨和寄件人共用資料部份,將流程轉向新增解碼的副程式,共一組) d.搜尋: BD EC FD FF FF 00 8D 85 EC FD FF FF 74 17 8A 08 80 F9 61 7C 0A 80 F9 7A 7F 05 80 修改: 57 8A 07 3C 22 74 07 3C 00 74 09 47 EB F3 C6 07 20 47 EB ED 5F E8 10 FF FF FF C3 (修改無用的程式碼,另外寫一個清除「"」多餘符號的副程式,共一組) e.搜尋: 74 0F 3A C2 75 05 38 57 01 74 06 47 80 3F 00 75 D4 80 3F 00 74 3E 83 C7 02 80 3F 00 74 16 8A 07 3C 5C 74 0A 3C 2F 74 06 47 80 3F 00 75 F0 80 3F 00 74 16 47 80 3F 00 74 45 8A 07 3C 5C 74 0A 3C 2F 74 06 47 80 3F 00 75 F0 80 3F 00 74 30 C6 47 01 00 EB 2A 80 BD F0 FE FF FF 00 8D 85 F0 FE FF FF 74 12 8A 08 80 F9 5C 74 0B 80 F9 2F 74 06 40 80 38 00 75 EE 80 38 00 74 04 C6 40 01 00 6A 00 8D 45 FC 6A 00 8D 4D F4 50 8D 95 F0 FE FF FF 51 6A 00 6A 00 6A 00 52 FF 15 18 0A 4B 00 85 C0 75 04 33 C0 EB 78 F6 45 FC 修改: 57 8A 07 3C 3D 74 07 3C 00 74 7D 47 EB F3 47 81 7F 04 35 3F 42 3F 75 E9 E8 77 00 00 00 52 56 4F 57 B8 A5 6F 67 00 50 50 57 83 C7 09 57 33 C9 8A 07 3C 2B 74 1E 3C 3D 74 1A 3C 2F 74 16 3C 3F 74 16 3C 30 72 1A 3C 39 76 0A 24 DF 3C 41 72 10 3C 5A 77 0C 47 41 EB D8 80 7F 01 3D 75 01 47 47 8B F7 5F 51 57 B9 A5 6F 67 00 E8 00 C0 FA FF 59 8B 09 5F 03 F9 A4 80 7F FF 00 75 F9 E8 14 00 00 00 5E 5A 5F E9 78 FF FF FF 5F 33 C0 83 C9 FF F2 AE F7 D1 49 C3 57 51 33 C0 BF A5 6F 67 00 B9 08 00 00 00 F2 66 AB 59 5F C3 (修改無用的程式碼,另外寫一個處理 Base64 解碼的副程式,共一組) a.894DE8 MOV [EBP-18],ECX B9FFFFFFFF MOV ECX,FFFFFFFF F2AE REPNZ SCASB \ F7D1 NOT ECX 直接改為 CALL 004761E8 (呼叫解碼副程式) 49 DEC ECX / d.57 PUSH EDI 8A07 MOV AL,[EDI] 3C22 CMP AL,22 -------------> '"' 多餘符號 7407 JZ 004761F6 3C00 CMP AL,00 7409 JZ 004761FC 47 INC EDI EBF3 JMP 004761E9 C60720 MOV BYTE PTR [EDI],20 -> ' ' 填入空白 47 INC EDI EBED JMP 004761E9 5F POP EDI E810FFFFFF CALL 00476112 C3 RET e.57 PUSH EDI 8A07 MOV AL,[EDI] 3C3D CMP AL,3D 7407 JZ 00476120 3C00 CMP AL,00 747D JZ 0047619A 47 INC EDI EBF3 JMP 00476113 47 INC EDI 817F04353F423F CMP DWORD PTR [EDI+04],3F423F35 75E9 JNZ 00476113 E877000000 CALL 004761A6 52 PUSH EDX 56 PUSH ESI 4F DEC EDI 57 PUSH EDI B8A56F6700 MOV EAX,00676FA5 50 PUSH EAX 50 PUSH EAX 57 PUSH EDI 83C709 ADD EDI,09 57 PUSH EDI 33C9 XOR ECX,ECX 8A07 MOV AL,[EDI] 3C2B CMP AL,2B 741E JZ 00476165 3C3D CMP AL,3D 741A JZ 00476165 3C2F CMP AL,2F 7416 JZ 00476165 3C3F CMP AL,3F 7416 JZ 00476169 3C30 CMP AL,30 721A JB 00476171 3C39 CMP AL,39 760A JBE 00476165 24DF AND AL,DF 3C41 CMP AL,41 7210 JB 00476171 3C5A CMP AL,5A 770C JA 00476171 47 INC EDI 41 INC ECX EBD8 JMP 00476141 807F013D CMP BYTE PTR [EDI+01],3D 7501 JNZ 00476170 47 INC EDI 47 INC EDI 8BF7 MOV ESI,EDI 5F POP EDI 51 PUSH ECX 57 PUSH EDI B9A56F6700 MOV ECX,00676FA5 E800C0FAFF CALL 00422180 59 POP ECX 8B09 MOV ECX,[ECX] 5F POP EDI 03F9 ADD EDI,ECX A4 MOVSB 807FFF00 CMP BYTE PTR [EDI-01],00 75F9 JNZ 00476186 E814000000 CALL 004761A6 5E POP ESI 5A POP EDX 5F POP EDI E978FFFFFF JMP 00476112 5F POP EDI 33C0 XOR EAX,EAX 83C9FF OR ECX,-01 F2AE REPNZ SCASB F7D1 NOT ECX 49 DEC ECX C3 RET 57 PUSH EDI 51 PUSH ECX 33C0 XOR EAX,EAX BFA56F6700 MOV EDI,00676FA5 B908000000 MOV ECX,00000008 F266AB REPNZ STOSW 59 POP ECX 5F POP EDI C3 RET 7.解決信件內容會顯示 Base64 亂碼問題 ==================================== 檔案: Eudora.exe 搜尋 : 2B C0 F2 AE F7 D1 2B F9 8B C1 C1 E9 02 8B F7 8B 7B 64 F3 A5 8B C8 83 E1 03 F3 A4 8B 修改 : E8 6F 9F 03 00 41 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- (顯示信件內容部份,將流程轉向新增解碼的副程式,共一組) 2BC0 SUB EAX,EAX -----> CALL 00476112 F2AE REPNZ SCASB INC ECX F7D1 NOT ECX 2BF9 SUB EDI,ECX 8BC1 MOV EAX,ECX C1E902 SHR ECX,02 8BF7 MOV ESI.EDI 8B7B64 MOV EDI,[EBX+64] F3A5 REPZ MOVSD 8BC8 MOV ECX,EAX 83E103 AND ECX,03 F3A4 REPZ MOVSB 8B45F0 MOV EAX,[EBP-10] 8.解決中文附檔會建立 Base64 亂碼問題 ==================================== (例如 Outlook 寄一封中文附檔讓 Eudora 來收) 檔案: Eudora.exe a.搜尋 : 0F BE C0 50 68 28 AA 49 00 修改 : 57 E8 4B 2C 05 00 5F EB 0C (處理中文附檔名稱部份,將流程轉向新增解碼的副程式,共一組) b.搜尋 : FF 47 80 3F 00 75 D4 修改 : -- -- -- -- -- -- F3 (跳開不必要的流程加快處理速度,共一組) a.0FBEC0 MOVSX EAX,AL 50 PUSH EAX 6828AA4900 PUSH 0049AA28 ↓ 57 PUSH EDI E84B2C0500 CALL 00476112 5F POP EDI EB0C JMP 004234D6 9.檔案下傳處 ============ 9.1 修改文件 ftp://ftp.nsysu.edu.tw/cpatch/faq/fix/fix_eudora22.txt 9.2 原始英文檔 ftp://ftp.nsysu.edu.tw/cpatch/email/eudora/source/eudora22pro.zip 9.3 單獨修正中文不相容問題 (保留原文) ftp://ftp.nsysu.edu.tw/cpatch/email/eudora/fix_22.zip 10.有問題歡迎來信指教 ===================== 這是我第一次為了中文亂碼問題而在 WINDOWS 環境下修改成功的軟體,感覺很棒。 有任何問題請電 gwotrang@hello.com.tw。 -- 【ICQ# : 10732312】 仲琦帳號 : gwotrang@mail.ht.net.tw 永久帳號 : gwotrang@hello.com.tw、gwotrang@ms5.url.com.tw 積極測試中。