發一個XX零戶統管8。01版的破解! (3千字)

看雪資料發表於2015-11-15

xx的公共財政8.01解狗

這是我第一次寫文,不當之處請大家多多指教!
用友的公共財政8.01是面對會計集中核算開發的專用軟體,但這種破解法同樣可以用於用友的其他軟體,如:用友U8 8.20版、用友公共財政軟體8.10版,其他版本應財力有限,無法買到。

工具:TRW2000 1.22
   W32DASM 8.93
      UEDIT  當然用HIEW可以了。


   解狗的一點心得,看了一位高手的一句話:軟體的破點不在加密程式中,而是軟體本身。
   呵呵,現在開始吧!

   公共財政8.01可以在NT下和9X下執行,在9X下無法當作伺服器,只能當單機版執行,軟體在執行時,要有SQLSERVER,請先安裝,如果沒狗,剛出現一個出錯對話方塊,無法進入主介面,但<系統服務>可以執行。
      執行TRW2000,載入主程式,經過N次的bpx ,發現無論是系統服務還是零戶統管,都要在執行時呼叫WINDOWS\system下的SERVER95.exe程式,在NT下,軟體把SERVERNT.exe註冊為系統服務程式,也要呼叫,在SERVERXX。EXE中取得返回值,IF有狗,則執行,ELSE出錯。所以,破解用友公共財政8.01的關鍵是在SERVER95。EXE中。
    用W32DASM反彙編,在字串中看見
    "Exit"
    "failed:不可識別的命令。"
    "failed:不能得到產品賬套和年度。"
    "failed:不正確的命令。."
    "failed:共享路徑失敗。"
    "failed:連線失敗。"
    "failed:沒有插加密狗,或不是SQL的加密狗,或登入" <--就是他了!!!!!!
    "failed:沒有輸入客戶端機器名。"
    "failed:沒有輸入命令。"
    "failed:沒有輸入賬套號。"

    雙擊跳到了
  SERVER95.EXE 
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401DB2(C)
|
:00401DC9 3BF5                    cmp esi, ebp
:00401DCB 7C1B                    jl 00401DE8
:00401DCD 8D542410                lea edx, dword ptr [esp+10]
:00401DD1 52                      push edx
:00401DD2 E8F9FCFFFF              call 00401AD0
:00401DD7 83C404                  add esp, 00000004
:00401DDA 3BF0                    cmp esi, eax <<----關鍵的比較!
:00401DDC 7C0A                    jl 00401DE8  <<----驚心一跳,不跳的話就GAME OVER!

* Possible StringData Ref from Data Obj ->"failed:沒有插加密狗,或不是SQL的加密狗,或登入"
                                        ->"的使用者數超過額定的使用者數。"
                                  |
:00401DDE BF74744000              mov edi, 00407474
:00401DE3 E9F3030000              jmp 004021DB

關鍵找出來了,那就改吧,在9X下你想怎麼改就怎麼改,可以加入你的提示,可以重新編輯程式碼長度,你可以使ESI不等於EAX,給EAX重新賦值,也可以給ESI重新賦值。改完,執行,進入主介面,一切功能都可以用。OK,在9X下的用友公共財政8.01已經可以執行了,沒有站點限制,沒有功能限制,但是在NT下,系統對EXE檔案的要求更為苛刻,是不能用改動指令長度的,也就是說:
        8BF0                    mov esi, eax
是兩個字元長,你不能改為三位,否則會出錯的。
怎麼辦?我們可以不改變指令程式碼的長度,而改為其他的指令,只要是兩位長就行了。
看看SERVERNT.EXE吧!
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004023A2(C)
|
:004023B9 3BF5                    cmp esi, ebp
:004023BB 7C1B                    jl 004023D8
:004023BD 8D542410                lea edx, dword ptr [esp+10]
:004023C1 52                      push edx
:004023C2 E8F9FCFFFF              call 004020C0
:004023C7 83C404                  add esp, 00000004
:004023CA 3BF0                    cmp esi, eax  <<<---***重心呀
:004023CC 7C0A                    jl 004023D8

* Possible StringData Ref from Data Obj ->"failed:沒有插加密狗,或不是SQL的加密狗,或登入"
                                        ->"的使用者數超過額定的使用者數。"
                                  |
:004023CE BF70854000              mov edi, 00408570
:004023D3 E9F3030000              jmp 004027CB
那我們怎麼改呢?


呵呵,只要把
:004023CA 3BF0                    cmp esi, eax
改為
:004023CA 3BF1                    cmp esi, eCx
執行,一切OK
好了,就寫這吧!
噢,在U8中找DEMO一樣的改,祝你用上好軟體!

相關文章