SuperDic32的破解
標 題:SuperDic32的破解
發信人:ylw
時 間:2003年9月25日 11:43
詳細資訊:
《SuperDic32的破解》
【軟體簡介】:超級字典生成器是一個十分好用的字典生成工具,速度很快。不僅可以生成 使用者自定義的字典,還可以對現有的字典進行修改等。
【軟體限制】:不能定義特殊字元,同時還禁止了一些特殊功能。
【破解者】:ylw
【破解工具】:Ollydbg1.09,W32Dasm10,PEid,WinHex
【破解步驟】:
首先用PEid開啟superdic.exe,分析軟體是否加殼。“Microsoft Visual C++ 6.0”,沒有加殼。
執行superdic.exe,選擇註冊頁,在註冊密碼處填入“78787878787878787878”(習慣用法)。這時會彈出一對話方塊:“感謝您註冊易優超級字典生成器!!!”,“請重啟本程式,如果您輸入的註冊碼正確,將能使用本軟體的全部功能,並可享受後續版本的免費升級。”
好了,這就是我們要破解的軟體。在動手之前先要分析問題,這一點很重要,大家別忙著一上來就設斷、跟蹤。從提示資訊可以看出它並不是對輸入的註冊碼立即進行比對,而是在重新啟動軟體時作比對,就象Flash Get的手法一樣。當然它肯定先把申請號和註冊密碼放在某個地方,以便再次啟動時進行讀取。本軟體是將註冊碼及申請號放在登錄檔HKEY_CURRENT_USERSoftwareEUsoftsuperdic中,這方面可以用FileMon和RegMon來跟蹤,我是用Ollydbg跟蹤得到的,跟蹤過程就不寫啦!大家可以自己試一下。
開始我認為它在啟動時要讀取登錄檔,於是就下斷點在RegQueryValueExA和RegOpenKeyA,沒想到這個軟體對登錄檔的呼叫是如此頻繁,以至於我不可能一個一個的進行篩選。參照破Flash Get的方法使用W32Dasm,在W32Dasm中查詢字串:“user”和“password”,很快有了結果。0040197D (user)、0040199D(password)這兩個地址是在你點選註冊按鈕後寫入登錄檔時用到的,這是前面跟蹤得到的結果。既然上面的程式碼是把註冊碼寫入登錄檔中,那麼它肯定還有一段程式碼是申請號和註冊碼從登錄檔中讀出來的,於是我繼續向下查詢,果然又找到了00401A2B(user)和00401A5E(password)。
用Ollydbg載入superdic.exe,在00401A2B處設斷,執行後,中斷在00401A2B,按F8單步執行至004030B7,此處將申請號壓入棧後呼叫Call,有點可疑應該查一下,跟進後執行至0040280D,此時EAX中為申請號,並壓入棧,繼續跟進,在0040273A處跟進,原因是分析這裡的程式碼只有這個Call起主要作用。跟蹤到0040276E,這個Call的作用是將從地址0012EFAC開始寫入0123456789ABCDEFFEDCBA9876543210(不是字串),可能是用來幫助生成註冊碼的,記下來。在00401C50處跟下去(跟蹤的詳細過程就不寫了,只寫主要的地方),你會發現EAX:67452301,EBX:98BADCFE,EBP:10325476,EDI:EFCDAB89,這正是前面見到的可疑串。接下來的Call 004025D0將地址0012EFC4開始的64個長的內容寫到0012EEEC處(後面算註冊碼時用),從這個Call返回後(圖五),從00401C7B―0040257F這一大段程式碼為註冊碼的生成過程,大家跟蹤到這裡可以看到有大量的邏輯運算和移位運算,我對加密演算法瞭解很少,也許是軟體作者自創的演算法。限於篇幅在此不詳細分析,大家在實踐時要仔細分析。
Call 00402760將一串字元“a8f57789bf462d48b31fafb13347499e”寫到以0012F031開始的地址,若想寫序號產生器,就得跟進去仔細分析,這裡將這一段省略。
繼續走到00402818(這是跟進來的),在這裡將會對上述字串進行處理,每隔一個取一個進行判斷,若是數字,則減30存入EDI所指的地址;若非數字,則減56存入EDI所指的地址。EDI從0012F058開始以4遞增,ESI每次遞增1,結束迴圈條件是ESI不小於10(十進位制為16)。
在接下來的0040286E處的迴圈及004028BC處的迴圈對資料進行處理,在0012F114處寫入“LngNr9YXp4WPyryk”,程式碼如下:
0040286E |> 8BD1 MOV EDX,ECX
00402870 |. 81E2 0F000080 AND EDX,8000000F
00402876 |. 79 05 JNS SHORT superdic.0040287D
00402878 |. 4A DEC EDX
00402879 |. 83CA F0 OR EDX,FFFFFFF0
0040287C |. 42 INC EDX
0040287D |> 8BC7 MOV EAX,EDI
0040287F |. 83C1 5B ADD ECX,5B
00402882 |. 0FAF06 IMUL EAX,DWORD PTR DS:[ESI]
00402885 |. 83C6 04 ADD ESI,4
00402888 |. 8D1CC5 0000000> LEA EBX,DWORD PTR DS:[EAX*8]
0040288F |. 2BD8 SUB EBX,EAX
00402891 |. 8D1C98 LEA EBX,DWORD PTR DS:[EAX+EBX*4]
00402894 |. 8B4494 48 MOV EAX,DWORD PTR SS:[ESP+EDX*4+48]
00402898 |. 03C3 ADD EAX,EBX
0040289A |. BB 3D000000 MOV EBX,3D
0040289F |. 99 CDQ
004028A0 |. F7FB IDIV EBX
004028A2 |. 47 INC EDI
004028A3 |. 81F9 B0050000 CMP ECX,5B0
004028A9 |. 8956 FC MOV DWORD PTR DS:[ESI-4],EDX
004028AC |.^7C C0 JL SHORT superdic.0040286E
004028AE |. 8BB424 D400000> MOV ESI,DWORD PTR SS:[ESP+D4]
004028B5 |. 33C9 XOR ECX,ECX
004028B7 |. 8D5424 48 LEA EDX,DWORD PTR SS:[ESP+48]
004028BB |. 5B POP EBX
004028BC |> 8B02 MOV EAX,DWORD PTR DS:[EDX]
004028BE |. 83F8 19 CMP EAX,19
004028C1 |. 7F 08 JG SHORT superdic.004028CB
004028C3 |. 85C0 TEST EAX,EAX
004028C5 |. 7C 04 JL SHORT superdic.004028CB
004028C7 |. 04 41 ADD AL,41
004028C9 |. EB 1E JMP SHORT superdic.004028E9
004028CB |> 83F8 23 CMP EAX,23
004028CE |. 7F 0B JG SHORT superdic.004028DB
004028D0 |. 83F8 1A CMP EAX,1A
004028D3 |. 7C 06 JL SHORT superdic.004028DB
004028D5 |. 8A02 MOV AL,BYTE PTR DS:[EDX]
004028D7 |. 04 16 ADD AL,16
004028D9 |. EB 0E JMP SHORT superdic.004028E9
004028DB |> 83F8 3D CMP EAX,3D
004028DE |. 7D 0C JGE SHORT superdic.004028EC
004028E0 |. 83F8 24 CMP EAX,24
004028E3 |. 7C 07 JL SHORT superdic.004028EC
004028E5 |. 8A02 MOV AL,BYTE PTR DS:[EDX]
004028E7 |. 04 3D ADD AL,3D
004028E9 |> 880431 MOV BYTE PTR DS:[ECX+ESI],AL
004028EC |> 41 INC ECX
004028ED |. 83C2 04 ADD EDX,4
004028F0 |. 83F9 10 CMP ECX,10
004028F3 |.^7C C7 JL SHORT superdic.004028BC
進一步跟蹤到00402935處,注意這裡將是對輸入的密碼進行處理,此處有一比較操作:CMP ECX,14 所以我在輸入註冊碼時輸入了20(十六進位制的14)位數。
00402935 |. 83F9 14 CMP ECX,14 <---------------------------------註冊碼最好為20位。
00402938 |. 74 03 JE SHORT superdic.0040293D
0040293A |. 8845 00 MOV BYTE PTR SS:[EBP],AL
0040293D |> 33D2 XOR EDX,EDX
0040293F |. 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]
00402943 |> 8A042A MOV AL,BYTE PTR DS:[EDX+EBP]
00402946 |. 3C 39 CMP AL,39
00402948 |. 7F 0C JG SHORT superdic.00402956
0040294A |. 3C 30 CMP AL,30
0040294C |. 7C 08 JL SHORT superdic.00402956
0040294E |. 0FBEC0 MOVSX EAX,AL
00402951 |. 83E8 16 SUB EAX,16
00402954 |. EB 1E JMP SHORT superdic.00402974
00402956 |> 3C 7A CMP AL,7A
00402958 |. 7F 0C JG SHORT superdic.00402966
0040295A |. 3C 61 CMP AL,61
0040295C |. 7C 08 JL SHORT superdic.00402966
0040295E |. 0FBEC0 MOVSX EAX,AL
00402961 |. 83E8 3D SUB EAX,3D
00402964 |. EB 0E JMP SHORT superdic.00402974
00402966 |> 3C 5A CMP AL,5A
00402968 |. 7F 0C JG SHORT superdic.00402976
0040296A |. 3C 41 CMP AL,41
0040296C |. 7C 08 JL SHORT superdic.00402976
0040296E |. 0FBEC0 MOVSX EAX,AL
00402971 |. 83E8 41 SUB EAX,41
00402974 |> 8901 MOV DWORD PTR DS:[ECX],EAX
00402976 |> 42 INC EDX
00402977 |. 83C1 04 ADD ECX,4
0040297A |. 83FA 14 CMP EDX,14
0040297D |.^7C C4 JL SHORT superdic.00402943
仔細分析此處程式碼,若為數字,則減16,存入[ECX](表示ECX中的內容,此處為地址值);若為小寫字母,則減3D,存入[ECX];若為大寫字母,則減41,存入[ECX]。ECX從0012F088開始以4遞增,EDX每迴圈一次加1,迴圈結束條件是EDX不小於14(十進位制為20)。
執行到00402A13( 省略了一些中間過程)時,註冊碼的前16位已被處理為“78787s787CHKP8X0”,繼續跟蹤,此時將進入最後的比較階段,勝利在望。
執行到004030C8,004030C8―00403124為比較過程,經實驗跳向004031AC會失敗,跳向00403130就會成功。看到這裡,你肯定知道如何爆破了,我就不再多說了。其實透過對前面程式碼的分析,我們已經可以寫出其序號產生器,前面有些步驟省略了,大家自己試一下吧!
“CRACKER最關心的是程式的保護方式和加密思想及其可能存在的漏洞。”雖然爆破比較簡單,但不是最終目的。我覺得還是做出序號產生器好,那樣不僅可以瞭解程式碼的執行以及學習軟體作者的方法,而且對自己也是個很好的鍛鍊,可以積累程式設計經驗。我剛學破解,經驗不足,如有錯誤還請諸位指正,謝謝!
相關文章
- Java的破解和反破解之道 (轉)2007-12-09Java
- 彩虹狗GS-MH破解-淺談狗的破解方法2015-11-15
- 破解東航的seriesid2020-07-29
- VM - DerpNStink 的破解2019-02-18
- VM - Raven: 1 的破解2019-04-14
- VM - Lazysysadmin 的破解2018-08-24
- 不完全的破解2000-11-23
- 破解NP的建議2007-02-12
- PC掌中寶的破解2015-11-15
- Mac下面的SecureCRT(附破解方案) 更新到最新的7.2的破解方案2018-01-16MacSecurecrt
- 什麼是暴力破解?暴力破解的方法有哪些?2023-11-06
- 黑娃講破解知識之菜鳥的破解之路(轉)2007-08-12
- 破解基礎----背的滾瓜爛熟差不多就會破解2013-02-21
- 面向 CTF 的 VM 破解系列2019-02-18
- VM - Typhoon 1.02 的破解2019-04-14
- VM - FourAndSix 2.01 的破解2019-04-14
- 破解敏捷測試的迷思2011-11-15敏捷測試
- 汽車破解2023-04-02
- WinImage密碼的另一種破解――WinHex破解法 (2千字)2001-07-12密碼
- 最新最全的史上最簡單的IDEA破解教程(破解到2100年)2019-03-14Idea
- myeclipse2017破解過程以及遇到的破解失敗的問題2018-09-13Eclipse
- 兩個月的破解回顧以及7個軟體的破解! (3千字)2000-12-28
- Navicat 破解版下載,Navicat破解教程2021-10-12
- 技術無罪的switch破解2019-03-18
- 破解資訊保安產業的“人才荒”2017-07-03產業
- HDP看不了直播的破解方法2016-07-21
- SecureCRT 工具的破解和安裝2014-01-10Securecrt
- 無線wifi密碼的破解2013-11-24WiFi密碼
- Access Animation破解的簡要分析2003-05-10
- 破解FlashGet1.65的過程2015-11-15
- 手工破解solaris密碼的方法2009-07-31密碼
- 我終於破解了魔裝網神了,破解過程!!,不過是用2.70破解的。 (1千字)2001-10-15
- 天網防火牆個人版2.0.2.98(beta)的破解,參考TAE!的破解。
(5千字)2001-02-10防火牆
- MySQL Manager 2.8.0.1脫殼破解手記破解分析2004-11-03MySql
- .Net環境的下的程式破解(2)2003-06-16
- StarUml 3.0.2破解2019-02-26
- 破解idea2019-01-14Idea
- 暴力破解2020-12-17