* updated by Kii Ali, 12-11-2001 ------------------------------------------------------------------------------------------ X-Sender: gwotrang@mail.ht.net.tw Date: Sat, 17 Apr 1999 18:34:54 +0800 To: Kii Ali From: Gwo Trang Subject: serv-u 的 CheckSum (ok) At 04:43 AM 1999/4/13 Tuesday, Kii Ali wrote: > client ,自己也可以「同時」做 server 啊,在 servu 裡面會出現你自 >己的 ip address ,照著在 cuteftp 用這個ip 登入就可以看到,觀念通了就 >可以了。 以前不曾這樣測試過,現在觀念通了。:) >serv-u 這軟體不給他中文化掉,實在是咬牙切齒中... 馬上為你們兩位帶來一點光明,以後的中文化可以繼續做了。:) >> to: 果糖, ynk ,你看一下 servu 2.5 還有沒有檢查 checksum?我看不出來。 現在可以肯定的是,Serv-U 每一個版本都有 Checksum 保護, 如果沒有重景的測試報告,我到現在大概都還不會碰它。 >看了您的推鑒,就去挖 2.5B6 來玩玩, 發現它還是有 Checksum: > 我分別使用 EXESCOPE 將選單 File(F) 中文化成 檔案(F),以測試是否有 > CheckSum ,結果在故意無法登入連 TRY 下,不到兩秒 SERV-U 就蹦出警告 > 視窗然後就當了. > 接著使用 FH 將 ASCII 字串 Serv-U FTP-Server v2.5 build 6 改成 > Serv-U FTP-伺服機 v2.5 build 6 ,然後作同樣的測試,經過約 10 秒,也是 > 掛掉. >結論是不管是 RC 資源或 ASCII 字串,只要有任一個被修改,SERV-U 就無法 >正常工作. 好在有環境可以測試(多虧 ka 提醒),不然我也找不到在哪裡, 經過分析後,Serv-U 的 Checksum 我已經瞭如指掌,以後的新版 本也可以輕易修改了。 解決 Serv-U 的 Checksum 保護問題 ================================ Serv-U v2.5 (Build 6) 檔案 : Serv-U32.exe 搜尋 : D4 75 0A (跳開 Checksum 檢查,共一組) 修改 : -- -- 00 Serv-U v2.5 檔案 : Serv-U32.exe 搜尋 : 08 75 0A (跳開 Checksum 檢查,共一組) 修改 : -- -- 00 我只測試這兩個,其它的有需要再說。 直接跳開的修改法是給自己用的,如果要中文化丟出去的版本, 最好是調整 Checksum 值。(可以防毒,防修改) to wcc: 你剛剛丟出來的 2.5 中文化版本,只要照著下面修改後, 即可兼顧 Checksum 保護。 Serv-U v2.5 檔案 : Serv-U32.exe 搜尋 : 9F 43 (配合中文化來調整 Checksum 值,共一組) 修改 : B6 F5 另外,如果還有其它的中文化版本,我也可以馬上幫忙調整。:) ------------------------------------------------------------------------------------------ X-Sender: gwotrang@mail.ht.net.tw Date: Fri, 23 Apr 1999 11:09:32 +0800 To: Patch-author From: Gwo Trang Subject: 加強 Serv-U 的中文相容能力記錄 Serv-U 是一套很好用的 FTP 架站軟體,有一個很大的缺點就是對於中文的相容 能力並不完全,只要是目錄名稱最後一個中文字的第二 byte 介於 F0∼FE 的範 圍內時,目錄就無法切換,例如目錄名稱為 '烈火',Serv-U 就無法讓使用者切 換目錄,因為 '火' 字的第二個 byte 是 F5 (F0∼FE 範圍),要說起這類的中文 字就有一堆.. 火、牙、紅、泰、場、裂、億、水、爪、莽、牛、犬..,困擾吧? 常用的字幾乎都有,當然,已經有聰明的使用者知道這種情況,會利用其它的符 號隔開,例如:'[紅牛]' 或 '紅牛_' 等,只要最後一個 byte 不是介於 F0∼FE 的範圍即可,現在,我們把這個問題修正後就不必這麼麻煩了,目錄名稱可以直 接是 '紅牛'。 另外,還有一種情況,就是目錄名稱內含有 '\' (5C) 字元時就很麻煩了,例如 目錄名稱為 '馬蓋先' 其中 '蓋' 字的第二個 byte 就是 '\' (5C),這時不管 怎麼用符號來隔開都沒有辦法讓 Serv-U 的系統認識,怎麼辦? 我們只好再餵它 吃幾顆大補丸,增加點智慧,這個問題修正後,目錄就可以正常切換了。 ha..ha.. 雖然看起來很順利,但是 Serv-U 的體質還是先天不良,我們所加進去 的判斷式還是不夠聰明,隱藏幾個盲點,我們只要避開這些情況,Serv-U 的目錄 命名就完全相容中文了。 第一:根目錄符號 '\' (5C) 字元不能是目錄的最後一個 byte,例如目錄名稱為 '成功',只要記得把 '功' 字用任意符號隔開即可,如 '成功_'。 若是目錄名稱為 '成功了' 就根本不必擔心,因為含有 '\' 字元的功字在 中間。 第二:因為判斷式只針對 A1 做二分法的判斷,有些情況是會產生誤判的,例如    C:\File\介面\修改\,'面' 字的第二個 byte 是 B1 (大於 A1),就會和    緊接在後面的根目錄 '\' 符號誤判為中文字而略過不處理,若要避開這種 誤判的情況就要將目錄修改,完全隔開 '\' 與中文字的接觸即可。    例如改為:\介面_\修改\ 或是 \介面\any english word\修改\。這種修    改可以視情況而定,如果目錄返回有問題再改變名稱也不遲。 Serv-U v2.5 (Build 6) 【加強 Serv-U 的中文相容能力記錄】 1.解決中文目錄的最後一個 byte 介於 F0∼FE 時,目錄無法切換問題 ============================================================== 檔案 : Serv-U32.exe 搜尋 : F0 73 E3 (共二組) 修改 : -- -- 00 803C1EF0 CMP BYTE PTR [EBX+ESI],F0 73E3 JAE 0042FA2B 2.解決中文目錄含有 '\' 字元時,目錄無法切換問題 =============================================== 檔案 : Serv-U32.exe a.搜尋 : 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 EB 11 8B C2 EB 0D 8D 42 01 EB 08 修改 : 0B 84 DB 74 03 42 EB F3 33 C0 EB 12 3C 5C 75 0C 80 7A 01 00 74 06 80 7A FF A1 73 E9 8B C2 5B 5D C3 3C 5C 75 0F 4E 80 3C 1E A1 73 07 46 C6 04 1E 2F EB 01 46 46 C3 (修改程式片段,增加對 '\' 5Ch 的判斷,加強中文相容性,共一組) b.搜尋 : 83 F8 5C 75 04 C6 04 33 修改 : E8 6B 41 09 00 EB 03 -- (將 '\' 字元轉換為 '/' 字元部份,將流程轉向新增判斷副程式,共一組) c.搜尋 : 8D 46 01 03 C3 50 E8 18 48 09 00 59 50 8D 56 02 03 D3 52 8D 4E 01 03 CB 51 E8 修改 : FF 4D F4 8B 55 F4 0F BE 0A 83 F9 5C 75 06 80 7A FF A1 72 05 3B 75 F4 72 E7 C3 (返回上層目錄部份,在程式中挪用一塊無用的區域撰寫新增判斷,共一組) d.搜尋 : 05 3B 75 F4 72 ED 修改 : 00 E8 E7 00 00 00 (返回上層目錄部份,將流程轉向新增判斷副程式,共一組) a.55 PUSH EBP 8BEC MOV EBP,ESP 53 PUSH EBX 8B5508 MOV EDX,[EBP+08] 8BCA MOV ECX,EDX 8A450C MOV AL,[EBP+0C] FC CLD 8A1A MOV BL,[EDX]-----> MOV BL,[EDX] 3AC3 CMP AL,BL CMP AL,BL 742C JZ 0049964F JZ 0049962E 84DB TEST BL,BL TEST BL,BL 7424 JZ 0049964B JZ 0049962A 8A5A01 MOV BL,[EDX+01] INC EDX 3AC3 CMP AL,BL JMP 0049961D 7425 JZ 00499653 XOR EAX,EAX 84DB TEST BL,BL JMP 00499640 7419 JZ 0049964B CMP AL,5C 8A5A02 MOV BL,[EDX+02] JNZ 0049963E 3AC3 CMP AL,BL CMP BYTE PTR [EDX+01],00 741F JZ 00499658 JZ 0049963E 84DB TEST BL,BL CMP BYTE PTR [EDX-01],A1 740E JZ 0049964B JAE 00499627 8A5A03 MOV BL,[EDX+03] MOV EAX,EDX 3AC3 CMP AL,BL POP EBX 7419 JZ 0049965D POP EBP 83C204 ADD EDX,04 RET 84DB TEST BL,BL CMP AL,5C 75D2 JNZ 0049961D JNZ 00499656 33C0 XOR EAX,EAX DEC ESI EB11 JMP 00499660 CMP BYTE PTR [EBX+ESI],A1 8BC2 MOV EAX,EDX JAE 00499655 EB0D JMP 00499660 INC ESI 8D4201 LEA EAX,[EDX+01] MOV BYTE PTR [EBX+ESI],2F EB08 JMP 00499660 JMP 00499656 8D4202 LEA EAX,[EDX+02] INC ESI EB03 JMP 00499660 INC ESI 8D4203 LEA EAX,[EDX+03] RET 5B POP EBX 5D POP EBP C3 RET b.83F85C CMP EAX,5C 7504 JNZ 004054DC C604332F MOV BYTE PTR [ESI+EBX],2F ↓ E86B410900 CALL 00499643 EB03 JMP 004054DD c.FF4DF4 DEC DWORD PTR [EBP-0C] 8B55F4 MOV EDX,[EBP-0C] 0FBE0A MOVSX ECX,BYTE PTR [EDX] 83F95C CMP ECX,5C 7506 JNZ 00404ED1 807AFFA1 CMP BYTE PTR [EDX-01],A1 7205 JB 00404ED6 3B75F4 CMP ESI,[EBP-0C] 72E7 JB 00404EBD C3 RET d.83F95C CMP ECX,5C 7405 JZ 00404DD6 3B75F4 CMP ESI,[EBP-0C] ---> CALL 00404EBD 72ED JB 00404DC3 有許多 FTP 站就是用這套 Serv-U 軟體架的,有興趣的朋友可以測試一下, 自己建立目錄後,再切換目錄試試。:) (PS: 能夠測試的前提是,Serv-U 的 Setup -> FTP-server 內有一個選項    「use all lower case for files/dirs」沒有打勾) 對於有興趣測試 Serv-U 的朋友,我也把改好的一份 fix 檔放在 /faq/fix/ 目錄下,有問題再聯絡我,底下是一份 patch 檔。 ftp://ftp.nsysu.edu.tw/cpatch/faq/fix/fix_servu25b6.zip (約22K) ------------------------------------------------------------------------------------------ Date: Sat, 01 May 1999 09:16:45 +0800 To: Kii Ali From: Gwo Trang Subject: Serv-U 2.4a (ok) At 03:08 AM 1999/5/1 Saturday, you wrote: >要麻煩你改這兩個版了。屢次運作,屢當。server 出錘,煩死了。 >這兩個檔,一個在 中山 mirror 站有,一個在 hoher 有。 > >servu 2.4a 正式版 >servu 2.5a b1 > >2.5 似乎比較不穩?當到煩了。 前幾天也是當機吧? 原本想上去更新 fix 目錄竟然都上不去, 今天上去後看到已經都更新了,不是懶惰哦,我腦袋有記得, 只是速度慢一點。:P Serv-U v2.4a 正式版 檔案 : Serv-U32.exe 1.搜尋 : 04 75 0A (跳開 Checksum 檢查,共一組) 修改 : -- -- 00 第一種方法比較差是等待 Checksum 加總完畢後才跳過檢查, 第二種方法則是將整個 Checksum 加總動作完全略過,可省下 非常多的檢查時間,加快本身的執行速度,因為 Serv-U 檢查 時是對本身的 .exe 執行檔做迴圈式的讀取動作,時間耗去相 當多,所以在連線時感覺訊息有時會停頓一下就是這個原因, 不知情的人還以為是 ftp 塞車造成的。 檔案 : Serv-U32.exe 2.搜尋 : 0F 84 C5 00 (完全不做 Checksum,共一組) 修改 : E9 BC 00 -- 把第一種列出來是為了讓你知道一下。 hohor 我也連不上(人太多了),所以 2.5a b1 沒有抓來改。 >>最好是調整 Checksum 值。(可以防毒,防修改) >不讓別人再碰就是了。 :) 這兩個目的應該都是原作者想要的吧,既然我們出了他的 patch 檔,實在也應該盡量幫他補上,不然真的名符其實叫做破解檔了, 因為是公開的站台所以才需要加,保護也不是我們另外加上,是 原有的,所謂的自大心態,草民可是完全沒有,大人明鑒啊。:) ------------------------------------------------------------------------------------------ Date: Sat, 08 May 1999 20:47:51 +0800 To: Kii Ali From: Gwo Trang Subject: 2.3 的所有版本完全都沒有 Checksum 保護 At 01:12 PM 1999/5/7 Friday, you wrote: >目前在 /ftp/servu/source 先擺上幾個樣品,包括 2.3c beta6, 2.3c beta11, >2.4a, 2.5a (剛出來的正式版),大家就給點意見,看要上那一個,要不然 >server 的負擔重,我也受不了。在自己的機器上測,登入的人數那麼少, >之前的 2.5 各測試版是怎麼測也是測不出問題,一上 cpatch ftp server >沒兩下就被 dr.watson 請出而當掉。 > >果糖,這幾個版本,也要麻煩你順手解決了。 2.3 的所有版本完全都沒有 Checksum 保護,真是浪費我的時間。:) Serv-U v2.5a 正式版 檔案 : Serv-U32.exe 搜尋 : 24 00 0F 84 D9 (完全不做 Checksum,共一組) 修改 : -- -- E9 D0 00 (將整個 Checksum 加總動作完全略過,可省下非常多的檢查時間,加快執行速度。)