URL Address Book V6.05簡單演算法分析+VB序號產生器原始碼 (10千字)
URL Address Book V6.05簡單演算法分析+VB序號產生器原始碼
軟體名稱:URL Address Book V6.05
軟體介紹 :好用的書籤及E-MAIL通訊錄整理工具,它可將書籤及E-MAIL名單建立成一個個的檔案,且每個檔案還可分門別類,可預設任何種瀏覽器、當您使用書籤時只需點選書籤即可開啟瀏覽器瀏覽網站或開啟E-MAIL、管理上相當方便、尤其在分類、移動、編輯皆相當的容易管理,當然它也可將正在瀏覽的網站直接加入。啟動時會常駐於System Tray上、點選一下即可開啟使用。
下載地址:http://www.skycn.com/soft/4393.html
破解人:BurSH (於2003.7.16)
所屬組織:FCG-CCG-BCG-OCN-DFCG
破解工具:OllDbg 1.09c
如何尋找關鍵點,大家可以去看you_known在網咖通宵的時候寫的《URL Address Book V6.05破解過程》,貼在了FCG論壇(新論壇www.51itcool.com/fcg,大家多多捧場^_^!).這篇演算法分析算幫他補完整哈!:-)
========================
直接進入關鍵Call吧:
========================
0048A834 /$ 55 PUSH EBP
0048A835 |. 8BEC MOV EBP,ESP
0048A837 |. 83C4 E4 ADD ESP,-1C
0048A83A |. 53 PUSH EBX
0048A83B |. 56 PUSH ESI
0048A83C |. 57 PUSH EDI
0048A83D |. 33DB XOR EBX,EBX
0048A83F |. 895D E4 MOV DWORD PTR SS:[EBP-1C],EBX
0048A842 |. 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
0048A845 |. 8BF9 MOV EDI,ECX
0048A847 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX //將使用者名稱放入SS:[EBP-4]
0048A84A |. 8BF0 MOV ESI,EAX
0048A84C |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048A84F |. E8 4C98F7FF CALL URLBOOK.004040A0
0048A854 |. 33C0 XOR EAX,EAX
0048A856 |. 55 PUSH EBP
0048A857 |. 68 59A94800 PUSH URLBOOK.0048A959
0048A85C |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0048A85F |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0048A862 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048A865 |. E8 8296F7FF CALL URLBOOK.00403EEC
0048A86A |. 3B86 C8000000 CMP EAX,DWORD PTR DS:[ESI+C8] //使用者名稱不能大於30位
0048A870 |. 7F 10 JG SHORT URLBOOK.0048A882
0048A872 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048A875 |. E8 7296F7FF CALL URLBOOK.00403EEC
0048A87A |. 3B86 CC000000 CMP EAX,DWORD PTR DS:[ESI+CC] //使用者名稱必須大於等於3位
0048A880 |. 7D 0C JGE SHORT URLBOOK.0048A88E
0048A882 |> 8BC7 MOV EAX,EDI
0048A884 |. E8 E393F7FF CALL URLBOOK.00403C6C
0048A889 |. E9 A5000000 JMP URLBOOK.0048A933
0048A88E |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048A891 |. E8 5696F7FF CALL URLBOOK.00403EEC
0048A896 |. 8BD8 MOV EBX,EAX //將使用者名稱位數放入EBX
0048A898 |. EB 37 JMP SHORT URLBOOK.0048A8D1
0048A89A |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4] //將使用者名稱得ASCII碼移入EAX
0048A89D |. 4B |DEC EBX //計數器EBX減一
0048A89E |. 3B58 FC |CMP EBX,DWORD PTR DS:[EAX-4] //EBX小於使用者名稱位數就跳
0048A8A1 |. 72 05 |JB SHORT URLBOOK.0048A8A8
0048A8A3 |. E8 9C85F7FF |CALL URLBOOK.00402E44
0048A8A8 |> 43 |INC EBX //計數器EBX加一
0048A8A9 |. 0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] //從右往左取使用者名稱
0048A8AE |. 50 |PUSH EAX
0048A8AF |. 8B86 14010000 |MOV EAX,DWORD PTR DS:[ESI+114]//EAX=&H54639
0048A8B5 |. 5A |POP EDX
0048A8B6 |. 8BCA |MOV ECX,EDX //將使用者名稱得ASCII碼移入ECX
0048A8B8 |. 99 |CDQ
0048A8B9 |. F7F9 |IDIV ECX //EAX除以ECX,餘數放入EDX
0048A8BB |. 8BC2 |MOV EAX,EDX //將餘數轉移到EAX
0048A8BD |. 8D55 E4 |LEA EDX,DWORD PTR SS:[EBP-1C]
0048A8C0 |. E8 C7E7F7FF |CALL URLBOOK.0040908C //依次將EAX的值從十六進位制轉換為十進位制,並與上次得到的結果連起來放到SS:[EBP-C]指向的地址!結果設為SN_TEMP!
0048A8C5 |. 8B55 E4 |MOV EDX,DWORD PTR SS:[EBP-1C]
0048A8C8 |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C] //注意SS:[EBP-C]指向的地址!
0048A8CB |. E8 2496F7FF |CALL URLBOOK.00403EF4
0048A8D0 |. 4B |DEC EBX //計數器減一
0048A8D1 |> 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0048A8D4 |. E8 1396F7FF |CALL URLBOOK.00403EEC
0048A8D9 |. 83E8 06 |SUB EAX,6
0048A8DC |. 3BD8 |CMP EBX,EAX //只計算六位的使用者名稱
0048A8DE |. 7C 04 |JL SHORT URLBOOK.0048A8E4
0048A8E0 |. 85DB |TEST EBX,EBX //全部使用者名稱都計算完了?
0048A8E2 |.^ 7F B6 \JG SHORT URLBOOK.0048A89A
0048A8E4 |> 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
0048A8E7 |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C]
0048A8EA |. E8 D9ABF7FF CALL URLBOOK.004054C8 //將前面得到的SN_TEMP轉換為十六進位制,放入EAX!設EAX值為SN_TEMP2!
0048A8EF |. 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
0048A8F2 |. 8955 EC MOV DWORD PTR SS:[EBP-14],EDX
0048A8F5 |. 8B5E 3C MOV EBX,DWORD PTR DS:[ESI+3C]
0048A8F8 |. 85DB TEST EBX,EBX
0048A8FA |. 7F 11 JG SHORT URLBOOK.0048A90D
0048A8FC |. FF75 EC PUSH DWORD PTR SS:[EBP-14]
0048A8FF |. FF75 E8 PUSH DWORD PTR SS:[EBP-18]
0048A902 |. 8BD7 MOV EDX,EDI
0048A904 |. 33C0 XOR EAX,EAX
0048A906 |. E8 E5E7F7FF CALL URLBOOK.004090F0
0048A90B |. EB 26 JMP SHORT URLBOOK.0048A933
0048A90D |> FF75 EC PUSH DWORD PTR SS:[EBP-14]
0048A910 |. FF75 E8 PUSH DWORD PTR SS:[EBP-18]
0048A913 |. 8BD7 MOV EDX,EDI
0048A915 |. 8BC3 MOV EAX,EBX
0048A917 |. E8 D4E7F7FF CALL URLBOOK.004090F0 //將SN_TEMP2轉換為字元型,不足12位前面補零!
0048A91C |. 8B07 MOV EAX,DWORD PTR DS:[EDI] //將結果放入EAX!結果設為SN_TEMP3
0048A91E |. E8 C995F7FF CALL URLBOOK.00403EEC
0048A923 |. 8BC8 MOV ECX,EAX
0048A925 |. 2B4E 3C SUB ECX,DWORD PTR DS:[ESI+3C]
0048A928 |. 8B56 3C MOV EDX,DWORD PTR DS:[ESI+3C]
0048A92B |. 42 INC EDX
0048A92C |. 8BC7 MOV EAX,EDI
0048A92E |. E8 0198F7FF CALL URLBOOK.00404134 //如果SN_TEMP3大於12位就只取前12位!
0048A933 |> 33C0 XOR EAX,EAX //這裡D EAX就是正確的註冊碼!^0^!
0048A935 |. 5A POP EDX
0048A936 |. 59 POP ECX
0048A937 |. 59 POP ECX
0048A938 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
0048A93B |. 68 60A94800 PUSH URLBOOK.0048A960
0048A940 |> 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
0048A943 |. E8 2493F7FF CALL URLBOOK.00403C6C
0048A948 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
0048A94B |. E8 1C93F7FF CALL URLBOOK.00403C6C
0048A950 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
0048A953 |. E8 1493F7FF CALL URLBOOK.00403C6C
0048A958 \. C3 RETN
0048A959 .^ E9 068DF7FF JMP URLBOOK.00403664
0048A95E .^ EB E0 JMP SHORT URLBOOK.0048A940
0048A960 . 5F POP EDI
0048A961 . 5E POP ESI
0048A962 . 5B POP EBX
0048A963 . 8BE5 MOV ESP,EBP
0048A965 . 5D POP EBP
0048A966 . C3 RETN
=============
總 結
=============
舉個例,比如BurSH這個使用者名稱:
B u r S H
從右往左取Ascii碼(如果使用者名稱大於6位只取後六位) 72 83 114 117 66
54639 Mod 每一位 57 45 9 39 15
把這幾個數連起來 574593915
轉換成十六進位制的 223F9B7B
若不足12位前面補零,若大於則只取前12位 0000223F9B7B
0000223F9B7B就是正確的註冊碼了,很簡單吧?*^_^*
==========================
附上VB序號產生器原始碼
==========================
'這個"大數轉換成十六進位制"的程式碼是PowerBoy給我的,謝謝!沒有他給我這段程式碼,我寫不出這個序號產生器:P
'但是如果數太大,比如18463581274745還是無法轉換成十六進位制,雖然這種情況很少見,但是畢竟不完美:(
'請各位指點一下,VB中如何處理大數.Aming的程式碼沒有註釋,偶看得糊塗呀……>_<
Function Dec2Hex(InputData As Double) As String
Dim i As Double
Dim HexOut As String
Dim d1, d2, d3, d4 As Double
Dim s1, s2 As String
Dim j, k As Integer
d1 = InputData
Do While (d1 / 16) > 1
i = Int(d1 - Int(d1 / 16) * 16)
Select Case i
Case 0
s1 = "0"
Case 1
s1 = "1"
Case 2
s1 = "2"
Case 3
s1 = "3"
Case 4
s1 = "4"
Case 5
s1 = "5"
Case 6
s1 = "6"
Case 7
s1 = "7"
Case 8
s1 = "8"
Case 9
s1 = "9"
Case 10
s1 = "A"
Case 11
s1 = "B"
Case 12
s1 = "C"
Case 13
s1 = "D"
Case 14
s1 = "E"
Case 15
s1 = "F"
Case Else
GoTo n1
End Select
s2 = s2 + s1
d1 = Int(d1 / 16)
Loop
Select Case d1
Case 0
s1 = "0"
Case 1
s1 = "1"
Case 2
s1 = "2"
Case 3
s1 = "3"
Case 4
s1 = "4"
Case 5
s1 = "5"
Case 6
s1 = "6"
Case 7
s1 = "7"
Case 8
s1 = "8"
Case 9
s1 = "9"
Case 10
s1 = "A"
Case 11
s1 = "B"
Case 12
s1 = "C"
Case 13
s1 = "D"
Case 14
s1 = "E"
Case 15
s1 = "F"
Case Else
GoTo n1
End Select
s2 = s2 + s1
Dec2Hex = StrReverse(s2)
GoTo n2
n1:
Dec2Hex = "Error"
n2:
End Function
'下面是序號產生器
Private Sub CmdGenKey_Click(Index As Integer)
On Error Resume Next
Dim i As Long, j As Long, Name_len As Long
Dim sn_temp As String
Dim sn As String
Dim AscArray() As Byte
Dim bignum As Double
txtSerial.Text = ""
If txtUserName.Text = "" Then
txtSerial.Text = "請輸入使用者名稱!"
Exit Sub
End If
AscArray = StrConv(txtUserName.Text, vbFromUnicode)
Name_len = UBound(AscArray)
j = UBound(AscArray)
Select Case Name_len
Case 0 To 1
txtSerial.Text = "使用者名稱必須大於兩位!"
Exit Sub
Case Is > 30
txtSerial.Text = "使用者名稱不能大於30位!"
Exit Sub
End Select
For i = 0 To Name_len
sn_temp = sn_temp & Trim(Str((345657 Mod AscArray(j))))
j = j - 1
If j < Name_len - 6 Then
Exit For
End If
Next i
bignum = Val(sn_temp)
sn = Dec2Hex(bignum)'這裡用了PowerBoy的Dec2Hex()函式,再次說聲謝謝!^_^!
If sn = "Error" Then
txtSerial.Text = "Invalid Licence!Plz use another one!"
Else
Do While Len(sn) < 12
sn = "0" & sn
Loop
txtSerial.Text = Left(sn, 12)
End If
End Sub
相關文章
- SysSync Version 1.02簡單演算法分析+VB序號產生器原始碼 (8千字)2015-11-15演算法原始碼
- Advanced Emailer 2.1 簡單演算法分析+序號產生器原始碼(tc2)2015-11-15AI演算法原始碼
- QuickCD V1.0.4演算法分析+序號產生器原始碼2015-11-15UI演算法原始碼
- 時間到了 v1.5 簡單註冊演算法分析
+ 序號產生器原始碼(tc2) (9千字)2003-04-12演算法原始碼
- 序號產生器制分析: (1千字)2001-11-19
- eBook Edit Pro 3.21 演算法分析及序號產生器原始碼2003-03-13演算法原始碼
- Quickness 3.1
註冊演算法分析 + 序號產生器原始碼(tc2) (15千字)2003-04-13UI演算法原始碼
- HappyIcon序號產生器TC原始碼 (1千字)2001-04-08APP原始碼
- AntiSpy PRO 1.02
註冊演算法分析 + 序號產生器原始碼(tc2) (12千字)2003-04-11演算法原始碼
- 守財奴1.9註冊分析+序號產生器原始碼2015-11-15原始碼
- Uninstall
Manager V4.20簡單註冊演算法+加密演算法分析+序號產生器C++原始碼:-)2004-10-30演算法加密C++原始碼
- winzip序號產生器 (1千字)2001-04-12
- 進位專家註冊演算法分析及序號產生器C原始碼2004-08-19演算法原始碼
- IrfanView 序號產生器分析(初級版)
(13千字)2015-11-15View
- 美萍安全衛士V8.45序號產生器制作分析過程,及序號產生器! (11千字)2001-10-28
- 超級公式計算器 V4.5x 演算法分析+序號產生器原始碼2015-11-15公式演算法原始碼
- 【原創】FileRecoveryAngel 演算法分析+序號產生器2015-11-15演算法
- 餅乾Flash播放器 V1.92-演算法+序號產生器原始碼2015-11-15播放器演算法原始碼
- VB家庭課堂 v2.0的演算法和序號產生器2015-11-15演算法
- Advanced Dialer v2.5演算法分析(附序號產生器) (3千字)2002-04-17演算法
- 如何製作VB程式記憶體序號產生器--國內某軟體的序號產生器(隱去軟體資訊)
(14千字)2002-08-04記憶體
- 《DesktopX v1.0》PJ 記錄 + 序號產生器原始碼 (13千字)2015-11-15原始碼
- 《AceReader V4.5》破文+序號產生器原始碼 (12千字)2015-11-15原始碼
- 成語速查 v3.0-3.2破文加序號產生器原始碼,簡單-高手看到不要笑
(8千字)2003-01-22原始碼
- winzip的通用序號產生器 (2千字)2001-12-10
- Universe 1.63註冊碼生成分析及序號產生器原碼(上) (2千字)2001-11-12
- 序號產生器合集2024-03-17
- win10如何執行序號產生器_win10怎麼執行序號產生器2020-08-28Win10
- NetTalk破解與序號產生器(高手勿進) (10千字)2001-09-20
- 全國電話通1.18
演算法分析+序號產生器2004-04-26演算法
- Windows系統切換工具
演算法分析+序號產生器2004-07-02Windows演算法
- NewsReactor 1.0 Build 5009的序號產生器制分析 (16千字)2001-08-07ReactUI
- Turbo Note+ V4.4序號產生器制分析 (19千字)2001-11-07
- Gif2Swf Ver 2.1 TC20序號產生器 && MASM32序號產生器 (4千字)2001-12-10ASM
- mIRC
v 6.16序號產生器C語言原始碼2004-08-17C語言原始碼
- 印表機監控王
V3.08註冊演算法分析及序號產生器原始碼2015-11-15演算法原始碼
- 密碼擷取網路版1.0序號產生器(VB寫的) (345字)2001-04-28密碼
- MASM32單詞跑馬燈免輸ID序號產生器:超級簡單 (6千字)2001-11-12ASM