軟體名:金蝶財務軟體行政事業版V6.2
作者:qdbenben
轉載:大老
原貼:http://dalao2002.yeah.net
歡迎轉載!但要保留完整謝謝!
加密狗型別:彩虹聖天諾狗
加密方法:API方式。
解密方法:帶狗解狗。
使用工具:TRW2000,W32DASM,Delphi5.0
相當長一段時間之前做過金蝶標準版7.0的解密,當時因為時間緊,只好對軟體進行暴力破解,由於暴破時對軟體主檔案進行了多處更改,破解後又沒有時間去進行驗證,不知道對軟體功能有沒有損害。此次破解行政事業版,時間上沒有要求,所以笨笨便迴避了上次的作法,轉而從狗和軟體之間去尋找突破口。於是便有了以下的破解思路及過程。
破解基本思路:
採用API方式加密的聖天諾狗需要使用一個名為sx32w.dll的動態連結庫,金蝶軟體也不例外,只是行政事業版的開發者將其改名為kdsx32w.dll,檔案存放於\Windows\system目錄下。
Sx32w.dll中包含了軟體讀取聖天諾狗所使用的所有過程和函式,所以可以這樣講,sx32w.dll是軟體與狗之間的一座橋,軟體就是透過這座橋與狗進行的資料交換。
笨笨這次就是要從這座橋上做做文章,所以本次破解的目標也就是――kdsx32w.dll。
破解過程:
1、使用TRW2000載入軟體的主檔案kdwin.exe.
下斷點bpx deviceiocontrol,很快就會發現已經進入kdsx32w.dll的空間,並且,軟體在kdwin.exe和kdsx32w.dll之間有一個多次的反覆判斷、執行過程。最後,軟體啟動登入介面或出現錯誤提示資訊。
2、用W32DASM反彙編kdsx32w.dll,檢視其內部的過程並區分各過程。
3、再次用TRW載入kdwin.exe,跟蹤至kdsx32w.dll入仔細檢視,發現kdsx32w.dll中過程的呼叫次序如下:
a) RNBOsproFORMatPacket 出錯時-->Error
b) RNBOsproInitialize
出錯時-->Error
c) RNBOsproGetVersion 出錯時-->提示:驅動版本低-->Error
e) RNBOsproFindFirstUnit出錯時-->Error
f) RNBOsproRead
出錯後轉向:RNBOsproFindNextUnit
-->Error
正確時:反覆執行多次RNBOsproRead,然後轉向g)
g) RNBOsproQuery
出錯後轉向:RNBOsproFindNextUnit
-->Error
正確時:
Pass!!
分析以上流程發現,軟體開發者將密碼的查詢串寫入了狗中,先透過f)處Read過程依位元組讀出,然後再將讀出的位元組合併後進入g)處Query過程進行變換,再取出變換值與密碼的驗證串進行比較,一致後便透過。
4)仔細閱讀kdsx32w.dll中的函式彙編程式碼,明確其使用的參量及返回值後,用delphi重新構造了一個kdsx32w.dll,除錯透過後用其替換原來的kdsx32w.dll。執行軟體,透過。