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一樣的改,祝你用上好軟體!