* updated by Kii Ali, 12-11-2001 Date: Tue, 13 Jun 2000 00:58:22 +0800 To: "patch-author List Member" From: Gwo Tang Subject: 讓 Serv-U v2.5e 完全相容中文 Mime-Version: 1.0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 【請用固定字型觀看】 這次 Serv-U 是我第三次嘗試修改,第一次曾經 post 出來,但那時因為 經驗不多改得不好,也沒有比較好的想法,第二次則是在中央大學嘗試架 站的時候又手癢改了一次,但那次沒有發表,雖然比第一次改得更好,但 還是有缺點,離開中央之後一直都很忙,而這幾天又摸到 Serv-U 了,心 裡想..以自己現在累積的經驗一定可以再把它改好,想睹睹看... 其實都 是一直自我催眠,沒想到實作後真的成功了,Serv-U 完全相容中文了!! 以下是我修改的心得,Serv-U 以後的版本也可以這麼改,有興趣的人可以 參考,當然我很歡迎大家來討論它,讓它完美一點。 我的 Client 端是用 AbsoluteFTP 1.6 來測試的,已經不用 CuteFTP 很 久了,因為它的毛病一堆,又不能多工連線,反正我對它抱怨很多。 【讓 Serv-U v2.5e 完全相容中文】 ================================ 檔案 : Serv-U32.exe a.搜尋 : 8A 45 0C FC 8A 1A 3A C3-74 2C 84 DB 74 24 8A 5A 01 3A C3 74 25 84 DB 74-19 8A 5A 02 3A C3 74 1F 84 DB 74 0E 8A 5A 03 3A-C3 74 19 83 C2 04 84 DB 75 D2 33 C0 修改 : 8A 5D 0C 80 FB 5C 74 0D-8A 02 3A C3 74 1C 3C 00 74 1D 42 EB F3 8A 02 3C-A1 73 0B 3C 00 74 10 3C 5C 74 07 42 EB EF 42 42-EB EB 8B C2 5B 5D C3 33 C0 5B 5D C3 (解決中文目錄中間字串含有 '\' 字元時,目錄無法切換問題,共一組) b.搜尋 : 8B D6 3A 10 75 F1 (將流程轉向新增判斷式,共一組) 修改 : E8 1B C6 F8 FF 90 c.搜尋 : 0F BE 44 1F FF 83 F8 5C 74 09 (共一組) 修改 : 66 81 7C 3B FE 00 5C 90 -- -- d.搜尋 : 00 6A 00 68 50 02 00 00-8B 54 24 08 52 E8 8B 73 07 00 83 C4 0C 68 98 3A-00 00 E8 66 00 08 00 59 89 44 24 04 66 BB 34 F5-8B 04 24 50 68 98 3A 00 00 6A 01 8B 54 24 10 52-E8 C0 72 07 00 83 C4 10 89 44 24 0C 83 7C 24 0C-00 74 69 33 FF 8B 44 24 04 8B D0 3B 7C 24 0C 7D-CF 83 FE 05 74 05 83 FE 06 75 09 8A 0A 88 4C 34-03 46 修改 : 83 FE 5C 74 19 8B EB 8B-D8 8B C6 8A 23 3A E0 74 07 3B DD 76 06 4B EB F3-8B C3 C3 33 C0 C3 57 8B FB 56 51 33 F6 57 8A 07-47 3C 00 75 F9 8D 4F FF 5F E8 19 00 00 00 85 C0-74 07 8B F7 47 3B F9 72 F0 85 F6 75 04 33 C0 EB-02 8B C6 59 5E 5F C3 8A 07 3C A1 73 0B 3C 00 74-0E 3C 5C 74 07 47 EB EF 47 47 EB EB 8B C7 C3 33-C0 C3 (新增 '\' 字元判斷式,共一組) e.搜尋 : 0F BE 8C 05 73 F5 FF FF 83 F9 5C (共二組) 修改 : 66 81 BC 28 72 F5 FF FF 3A 5C 90 f.搜尋 : 8B D8 85 C0 75 D1 68 (跳開判斷 '\\' 字串,共一組) 修改 : 33 DB 33 C0 -- -- -- g.搜尋 : 0F BE 84 1D 87 FB FF FF 83 F8 5C (共二組) 修改 : 66 81 BC 2B 86 FB FF FF 3A 5C 90 h.搜尋 : 83 FA 5C 74 04 84 C0 75 0B (共一組) 修改 : -- -- -- -- 00 -- -- -- -- i.搜尋 : 24 00 0F 84 D9 (完全不做 Checksum,共一組) 修改 : -- -- E9 D0 00 【a】 0137:00498960 55 PUSH EBP 0137:00498961 8BEC MOV EBP,ESP 0137:00498963 53 PUSH EBX 0137:00498964 8B5508 MOV EDX,[EBP+08] 0137:00498967 8BCA MOV ECX,EDX ******************************************************************************* 0137:00498969 8A450C MOV AL,[EBP+0C] 0137:0049896C FC CLD 0137:0049896D 8A1A MOV BL,[EDX] 0137:0049896F 3AC3 CMP AL,BL 0137:00498971 742C JZ 0049899F 0137:00498973 84DB TEST BL,BL 0137:00498975 7424 JZ 0049899B 0137:00498977 8A5A01 MOV BL,[EDX+01] 0137:0049897A 3AC3 CMP AL,BL 0137:0049897C 7425 JZ 004989A3 0137:0049897E 84DB TEST BL,BL 0137:00498980 7419 JZ 0049899B 0137:00498982 8A5A02 MOV BL,[EDX+02] 0137:00498985 3AC3 CMP AL,BL 0137:00498987 741F JZ 004989A8 0137:00498989 84DB TEST BL,BL 0137:0049898B 740E JZ 0049899B 0137:0049898D 8A5A03 MOV BL,[EDX+03] 0137:00498990 3AC3 CMP AL,BL 0137:00498992 7419 JZ 004989AD 0137:00498994 83C204 ADD EDX,04 0137:00498997 84DB TEST BL,BL 0137:00498999 75D2 JNZ 0049896D 0137:0049899B 33C0 XOR EAX,EAX ******************************************************************************* 0137:00498969 8A5D0C MOV BL,[EBP+0C] 0137:0049896C 80FB5C CMP BL,5C 0137:0049896F 740D JZ 0049897E 0137:00498971 8A02 MOV AL,[EDX] 0137:00498973 3AC3 CMP AL,BL 0137:00498975 741C JZ 00498993 0137:00498977 3C00 CMP AL,00 0137:00498979 741D JZ 00498998 0137:0049897B 42 INC EDX 0137:0049897C EBF3 JMP 00498971 0137:0049897E 8A02 MOV AL,[EDX] 0137:00498980 3CA1 CMP AL,A1 0137:00498982 730B JAE 0049898F 0137:00498984 3C00 CMP AL,00 0137:00498986 7410 JZ 00498998 0137:00498988 3C5C CMP AL,5C 0137:0049898A 7407 JZ 00498993 0137:0049898C 42 INC EDX 0137:0049898D EBEF JMP 0049897E 0137:0049898F 42 INC EDX 0137:00498990 42 INC EDX 0137:00498991 EBEB JMP 0049897E 0137:00498993 8BC2 MOV EAX,EDX 0137:00498995 5B POP EBX 0137:00498996 5D POP EBP 0137:00498997 C3 RET 0137:00498998 33C0 XOR EAX,EAX 0137:0049899A 5B POP EBX 0137:0049899B 5D POP EBP 0137:0049899C C3 RET 0137:0049899D EB11 JMP 004989B0 0137:0049899F 8BC2 MOV EAX,EDX 0137:004989A1 EB0D JMP 004989B0 0137:004989A3 8D4201 LEA EAX,[EDX+01] 0137:004989A6 EB08 JMP 004989B0 0137:004989A8 8D4202 LEA EAX,[EDX+02] 0137:004989AB EB03 JMP 004989B0 0137:004989AD 8D4203 LEA EAX,[EDX+03] 0137:004989B0 5B POP EBX 0137:004989B1 5D POP EBP 0137:004989B2 C3 RET 【b】 0137:00498D02 3BD8 CMP EBX,EAX 0137:00498D04 7504 JNZ 00498D0A 0137:00498D06 33C0 XOR EAX,EAX 0137:00498D08 EB07 JMP 00498D11 0137:00498D0A 48 DEC EAX ******************************************************************************* 0137:00498D0B 8BD6 MOV EDX,ESI 0137:00498D0D 3A10 CMP DL,[EAX] 0137:00498D0F 75F1 JNZ 00498D02 ******************************************************************************* 0137:00498D0B E81BC6F8FF CALL 0042532B (將流程轉向新增判斷式) 0137:00498D10 90 NOP 0137:00498D11 5E POP ESI 0137:00498D12 5B POP EBX 0137:00498D13 5D POP EBP 0137:00498D14 C3 RET 【c】 0137:00404C0C 85DB TEST EBX,EBX 0137:00404C0E 7E1B JLE 00404C2B 0137:00404C10 81FBFF010000 CMP EBX,000001FF 0137:00404C16 7D13 JGE 00404C2B ******************************************************************************* 0137:00404C18 0FBE441FFF MOVSX EAX,BYTE PTR [EBX+EDI-01] 0137:00404C1D 83F85C CMP EAX,5C ******************************************************************************* 0137:00404C18 66817C3BFE005C CMP WORD PTR [EDI+EBX-02],5C00 0137:00404C1F 90 NOP 0137:00404C20 7409 JZ 00404C2B 0137:00404C22 C6041F5C MOV BYTE PTR [EBX+EDI],5C 0137:00404C26 C6441F0100 MOV BYTE PTR [EBX+EDI+01],00 0137:00404C2B 807D1C00 CMP BYTE PTR [EBP+1C],00 0137:00404C2F 0F851F010000 JNZ 00404D54 【d】新增程式碼 - 將 Checksum 程式區當廢碼區 0137:00425326 E9D0000000 JMP 004253FB ******************************************************************************* 0137:0042532B 006A00 ADD [EDX+00],CH 0137:0042532E 6850020000 PUSH 00000250 0137:00425333 8B542408 MOV EDX,[ESP+08] 0137:00425337 52 PUSH EDX 0137:00425338 E88B730700 CALL 0049C6C8 0137:0042533D 83C40C ADD ESP,0C 0137:00425340 68983A0000 PUSH 00003A98 0137:00425345 E866000800 CALL 004A53B0 0137:0042534A 59 POP ECX 0137:0042534B 89442404 MOV [ESP+04],EAX 0137:0042534F 66BB34F5 MOV BX,F534 0137:00425353 8B0424 MOV EAX,[ESP] 0137:00425356 50 PUSH EAX 0137:00425357 68983A0000 PUSH 00003A98 0137:0042535C 6A01 PUSH 01 0137:0042535E 8B542410 MOV EDX,[ESP+10] 0137:00425362 52 PUSH EDX 0137:00425363 E8C0720700 CALL 0049C628 0137:00425368 83C410 ADD ESP,10 0137:0042536B 8944240C MOV [ESP+0C],EAX 0137:0042536F 837C240C00 CMP DWORD PTR [ESP+0C],00 0137:00425374 7469 JZ 004253DF 0137:00425376 33FF XOR EDI,EDI 0137:00425378 8B442404 MOV EAX,[ESP+04] 0137:0042537C 8BD0 MOV EDX,EAX 0137:0042537E 3B7C240C CMP EDI,[ESP+0C] 0137:00425382 7DCF JGE 00425353 0137:00425384 83FE05 CMP ESI,05 0137:00425387 7405 JZ 0042538E 0137:00425389 83FE06 CMP ESI,06 0137:0042538C 7509 JNZ 00425397 0137:0042538E 8A0A MOV CL,[EDX] 0137:00425390 884C3403 MOV [ESI+ESP+03],CL 0137:00425394 46 INC ESI ******************************************************************************* 0137:0042532B 83FE5C CMP ESI,5C 0137:0042532E 7419 JZ 00425349 0137:00425330 8BEB MOV EBP,EBX 0137:00425332 8BD8 MOV EBX,EAX 0137:00425334 8BC6 MOV EAX,ESI 0137:00425336 8A23 MOV AH,[EBX] 0137:00425338 3AE0 CMP AH,AL 0137:0042533A 7407 JZ 00425343 0137:0042533C 3BDD CMP EBX,EBP 0137:0042533E 7606 JBE 00425346 0137:00425340 4B DEC EBX 0137:00425341 EBF3 JMP 00425336 0137:00425343 8BC3 MOV EAX,EBX 0137:00425345 C3 RET 0137:00425346 33C0 XOR EAX,EAX 0137:00425348 C3 RET 0137:00425349 57 PUSH EDI 0137:0042534A 8BFB MOV EDI,EBX 0137:0042534C 56 PUSH ESI 0137:0042534D 51 PUSH ECX 0137:0042534E 33F6 XOR ESI,ESI 0137:00425350 57 PUSH EDI 0137:00425351 8A07 MOV AL,[EDI] 0137:00425353 47 INC EDI 0137:00425354 3C00 CMP AL,00 0137:00425356 75F9 JNZ 00425351 0137:00425358 8D4FFF LEA ECX,[EDI-01] 0137:0042535B 5F POP EDI 0137:0042535C E819000000 CALL 0042537A 0137:00425361 85C0 TEST EAX,EAX 0137:00425363 7407 JZ 0042536C 0137:00425365 8BF7 MOV ESI,EDI 0137:00425367 47 INC EDI 0137:00425368 3BF9 CMP EDI,ECX 0137:0042536A 72F0 JB 0042535C 0137:0042536C 85F6 TEST ESI,ESI 0137:0042536E 7504 JNZ 00425374 0137:00425370 33C0 XOR EAX,EAX 0137:00425372 EB02 JMP 00425376 0137:00425374 8BC6 MOV EAX,ESI 0137:00425376 59 POP ECX 0137:00425377 5E POP ESI 0137:00425378 5F POP EDI 0137:00425379 C3 RET 0137:0042537A 8A07 MOV AL,[EDI] 0137:0042537C 3CA1 CMP AL,A1 0137:0042537E 730B JAE 0042538B 0137:00425380 3C00 CMP AL,00 0137:00425382 740E JZ 00425392 0137:00425384 3C5C CMP AL,5C 0137:00425386 7407 JZ 0042538F 0137:00425388 47 INC EDI 0137:00425389 EBEF JMP 0042537A 0137:0042538B 47 INC EDI 0137:0042538C 47 INC EDI 0137:0042538D EBEB JMP 0042537A 0137:0042538F 8BC7 MOV EAX,EDI 0137:00425391 C3 RET 0137:00425392 33C0 XOR EAX,EAX 0137:00425394 C3 RET 0137:00425395 EB3B JMP 004253D2 0137:00425397 33C0 XOR EAX,EAX 0137:00425399 8A02 MOV AL,[EDX] 0137:0042539B C1E008 SHL EAX,08 0137:0042539E 6633D8 XOR BX,AX 0137:004253A1 33C0 XOR EAX,EAX 0137:004253A3 F6C780 TEST BH,80 0137:004253A6 7409 JZ 004253B1 0137:004253A8 03DB ADD EBX,EBX 0137:004253AA 6681F32110 XOR BX,1021 0137:004253AF EB02 JMP 004253B3 0137:004253B1 03DB ADD EBX,EBX 0137:004253B3 40 INC EAX 0137:004253B4 83F808 CMP EAX,08 0137:004253B7 7CEA JL 004253A3 0137:004253B9 83FE05 CMP ESI,05 0137:004253BC 7D12 JGE 004253D0 0137:004253BE 33C9 XOR ECX,ECX 0137:004253C0 8A0A MOV CL,[EDX] 0137:004253C2 0FBE8683484B00 MOVSX EAX,BYTE PTR [ESI+004B4883] 0137:004253C9 3BC8 CMP ECX,EAX 0137:004253CB 7503 JNZ 004253D0 0137:004253CD 46 INC ESI 0137:004253CE EB02 JMP 004253D2 0137:004253D0 33F6 XOR ESI,ESI 0137:004253D2 47 INC EDI 0137:004253D3 42 INC EDX 0137:004253D4 3B7C240C CMP EDI,[ESP+0C] 0137:004253D8 7CAA JL 00425384 0137:004253DA E974FFFFFF JMP 00425353 0137:004253DF 8B0424 MOV EAX,[ESP] 0137:004253E2 50 PUSH EAX 0137:004253E3 E848680700 CALL 0049BC30 0137:004253E8 59 POP ECX 0137:004253E9 8B542404 MOV EDX,[ESP+04] 0137:004253ED 52 PUSH EDX 0137:004253EE E865FF0700 CALL 004A5358 0137:004253F3 59 POP ECX 0137:004253F4 663B5C2408 CMP BX,[ESP+08] 0137:004253F9 750A JNZ 00425405 0137:004253FB C705F8384B00FFFFFFFFMOV DWORD PTR [004B38F8],FFFFFFFF 0137:00425405 81C410020000 ADD ESP,00000210 0137:0042540B 5F POP EDI 0137:0042540C 5E POP ESI 0137:0042540D 5B POP EBX 0137:0042540E C3 RET 【e】 ******************************************************************************* 0137:004012B3 0FBE8C0573F5FFFF MOVSX ECX,BYTE PTR [EAX+EBP+FFFFF573] 0137:004012BB 83F95C CMP ECX,5C ******************************************************************************* 0137:004012B3 6681BC2872F5FFFF3A5CCMP WORD PTR [EBP+EAX+FFFFF572],5C3A 0137:004012BD 90 NOP 0137:004012BE 7414 JZ 004012D4 0137:004012C0 68E2B54A00 PUSH 004AB5E2 (指向 '\' 字元位置) 0137:004012C5 8D8574F5FFFF LEA EAX,[EBP+FFFFF574] 0137:004012CB 50 PUSH EAX 0137:004012CC E853760900 CALL 00498924 0137:004012D1 83C408 ADD ESP,08 0137:004012D4 68E4B54A00 PUSH 004AB5E4 (指向 '*.*' 字串位置) 0137:004012D9 8D9574F5FFFF LEA EDX,[EBP+FFFFF574] 0137:004012DF 52 PUSH EDX 0137:004012E0 E83F760900 CALL 00498924 0137:004012E5 83C408 ADD ESP,08 0137:004012E8 E9BD000000 JMP 004013AA 【f】 0137:004052A9 6891B94A00 PUSH 004AB991 0137:004052AE 8D8D89FBFFFF LEA ECX,[EBP+FFFFFB89] 0137:004052B4 51 PUSH ECX 0137:004052B5 E893380900 CALL 00498B4D 0137:004052BA 83C408 ADD ESP,08 ******************************************************************************* 0137:004052BD 8BD8 MOV EBX,EAX 0137:004052BF 85C0 TEST EAX,EAX ******************************************************************************* 0137:004052BD 33DB XOR EBX,EBX 0137:004052BF 33C0 XOR EAX,EAX 0137:004052C1 75D1 JNZ 00405294 0137:004052C3 6800020000 PUSH 00000200 【g】 0137:00404EDC 8BD8 MOV EBX,EAX 0137:00404EDE 85DB TEST EBX,EBX 0137:00404EE0 7E1D JLE 00404EFF ******************************************************************************* 0137:00404EE2 0FBE841D87FBFFFF MOVSX EAX,BYTE PTR [EBX+EBP+FFFFFB87] 0137:00404EEA 83F85C CMP EAX,5C ******************************************************************************* 0137:00404EE2 6681BC2B86FBFFFF3A5CCMP WORD PTR [EBP+EBX+FFFFFB86],5C3A 0137:00404EEC 90 NOP 0137:00404EED 7410 JZ 00404EFF 0137:00404EEF C6841D88FBFFFF5C MOV BYTE PTR [EBX+EBP+FFFFFB88],5C 0137:00404EF7 C6841D89FBFFFF00 MOV BYTE PTR [EBX+EBP+FFFFFB89],00 0137:00404EFF 57 PUSH EDI 0137:00404F00 8D9588FBFFFF LEA EDX,[EBP+FFFFFB88] 0137:00404F06 52 PUSH EDX 0137:00404F07 E8183A0900 CALL 00498924 0137:00404F0C 83C408 ADD ESP,08 0137:00404F0F 33DB XOR EBX,EBX 0137:00404F11 8DB588FBFFFF LEA ESI,[EBP+FFFFFB88] 0137:00404F17 E988000000 JMP 00404FA4 【h】 0137:00404D57 83F95C CMP ECX,5C 0137:00404D5A 7520 JNZ 00404D7C 0137:00404D5C 807F0100 CMP BYTE PTR [EDI+01],00 0137:00404D60 741A JZ 00404D7C 0137:00404D62 8A4702 MOV AL,[EDI+02] 0137:00404D65 0FBED0 MOVSX EDX,AL 0137:00404D68 83FA5C CMP EDX,5C ******************************************************************************* 0137:00404D6B 7404 JZ 00404D71 ******************************************************************************* 0137:00404D6B 7400 JZ 00404D6D 0137:00404D6D 84C0 TEST AL,AL 0137:00404D6F 750B JNZ 00404D7C 0137:00404D71 8A4F01 MOV CL,[EDI+01] 0137:00404D74 880F MOV [EDI],CL 0137:00404D76 C647013A MOV BYTE PTR [EDI+01],3A 0137:00404D7A EB27 JMP 00404DA3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 已經修正完畢的 Serv-U 2.5e 中文化版本 (又名 ka 版),我把它放在 \beta\302gwotang\ 下面,有架站經驗的人不可以錯過,fix_servu25e.txt 已經內含在 zip 檔裡面。 -- [ICQ# : 10732312] E-Mail: gwotang@mail.apol.com.tw     gwotang@cpatch.org -- MDaemon 2.874 ───────────────────────────── (patch-author) 中文化作者討論 Mailing List 1.限於內部使用,請勿在未經知會的情形下,對外傳送或轉信給非 patch-author 成員。 2.增加或取消指定信箱帳號訂閱時,請寫信給弟手動處理。 Kii Ali ─────────────────────────────