找尋3DMark2001se的註冊碼,第一篇破文!
開刀物件:3DMark 2001 SE Build 330版For Win9x/ME/2000/XP(2002年6月17日釋出)Madonion的3D Mark系列測試軟體憑籍著亮麗的畫面和動感的音樂兩大法寶,已經成為了標準測試軟體,且深受大家的喜愛。簡便的操作,直觀的結果,與3D Winbench相比,3D Mark確實更能打動我們這些普通玩家。新版本里更加入了對DirectX 9.0、AGP 3.0 (AGP 8x)、日文和韓文作業系統、新型號的硬體產品(主要在圖形晶片方面)的支援,修正了上個版本的一些BUG。
目的:練手,該軟體在不註冊的情況一樣可以正常使用,註冊後增加網上服務功能!
下載地址:http://file.mydrivers.com/tools/tweak/3DMark2001SE.exe
使用工具:PEid, W32Dasm, Ollydbg1.09
使用平臺:Windows XP SP1
難度:比較簡單
過程:
1、用PEid檢查3dmark2001se.exe,發現是用VC++6.0編寫,無殼。
2、採用靜態分析的方法,看是否能找到有助破解的字串。用W32Dasm開啟3dmark2001se.exe,由於檔案體積比較大,分析的時間較長。分析完畢後,在“字串參考”中找到三條十分有用的資訊。一條是恭喜成功註冊云云,另外兩條是一樣的,當然是說註冊碼不正確了。雙擊其中一條,在其彙編附近沒發現明顯的註冊碼判斷語句,雙擊另外一條,到達如下地方:
* Reference To: MFC42.Ordinal:18BE, Ord:18BEh
00440598 . E87DE71F00
CALL 0063ED1A
0044059D . 8BB5A0000000 MOV ESI, DWORD PTR
[EBP+000000A0]
004405A3 . 8B46F8 MOV
EAX, DWORD PTR [ESI-08]
004405A6 . 85C0 TEST
EAX, EAX
004405A8 . 751F JNZ
004405C9
004405AA . 50 PUSH
EAX
* Possible Reference to String Resource ID=61600: "Incorrect registration information.Please enter the correc"
004405AB . 68A0F00000
PUSH 0000F0A0
004405B0 . 8BCB MOV
ECX, EBX
004405B2 . E8 2945FCFF CALL 00404AE0
004405B7 . 5E POP
ESI
004405B8 . 5D POP
EBP
004405B9 . 5B POP
EBX
004405BA . 8B4C24 34 MOV ECX, DWORD
PTR [ESP+34]
004405BE . 64:890D 00000>MOV DWORD PTR FS:[00000000],
ECX
004405C5 . 83C4 40 ADD ESP,
00000040
004405C8 . C3 RET
在00440598處有一個Call,後面有一個Test和JNZ,很經典的判斷註冊碼正確與否的格式。在這裡下斷點吧!
3、用Ollydbg開啟3dmark2001se.exe後,點Register,使用者名稱:Hartnett,試驗碼:1234567890(隨便輸的)。然後在執行模組中轉到3dmark2001se.exe領空,在00440598處下斷點。在3dmark中點OK後,程式被斷下。第一遍用F8粗跟,大致分析一遍後用F7+F8,到如下地方:
00610C10 . 6A FF
PUSH -1
00610C12 . 68 D4FA7400 PUSH 3DMark20.0074FAD4
; SE handler
installation
00610C17 . 64:A1 0000000>MOV EAX, DWORD PTR
FS:[0]
00610C1D . 50 PUSH
EAX
00610C1E . 64:8925 00000>MOV DWORD PTR FS:[0],
ESP
00610C25 . 83EC 24 SUB ESP,
24
00610C28 . 53 PUSH
EBX
00610C29 . 56 PUSH
ESI
00610C2A . 8B7424 40 MOV ESI, DWORD
PTR SS:[ESP+40]
00610C2E . 57 PUSH
EDI
00610C2F . 8B7E 08 MOV EDI,
DWORD PTR DS:[ESI+8]
00610C32 . 33DB XOR
EBX, EBX
00610C34 . 83FF 17 CMP EDI,
17 在此判斷註冊碼是否23位。
00610C37 . 895C24 0C MOV DWORD PTR
SS:[ESP+C], EBX
00610C3B . 0F85 5A010000 JNZ 3DMark20.00610D9B 不是23位的話跳走(爆破點)
00610C41 . 8B46 04 MOV EAX,
DWORD PTR DS:[ESI+4]
00610C44 . 3BC3 CMP
EAX, EBX
00610C46 . 8B15 5CF77500 MOV EDX, DWORD PTR DS:[<&MSVCP60.?_C>;
MSVCP60.?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB
00610C4C . 8BCA MOV
ECX, EDX
00610C4E . 74 03 JE
SHORT 3DMark20.00610C53
00610C50 . 8D48 05 LEA ECX,
DWORD PTR DS:[EAX+5]
00610C53 > 8039 2D CMP
BYTE PTR DS:[ECX], 2D 第六個字元是否是“-”
00610C56 . 0F85 3F010000 JNZ 3DMark20.00610D9B 不是的話註冊失敗
00610C5C . 3BC3 CMP
EAX, EBX
00610C5E . 8BCA MOV
ECX, EDX
00610C60 . 74 03 JE
SHORT 3DMark20.00610C65
00610C62 . 8D48 0B LEA ECX,
DWORD PTR DS:[EAX+B]
00610C65 > 8039 2D CMP
BYTE PTR DS:[ECX], 2D 第十二個字元是否是“-”
00610C68 . 0F85 2D010000 JNZ 3DMark20.00610D9B 不是的話註冊失敗
00610C6E . 3BC3 CMP
EAX, EBX
00610C70 . 75 04 JNZ
SHORT 3DMark20.00610C76
00610C72 . 8BC2 MOV
EAX, EDX
00610C74 . EB 03 JMP
SHORT 3DMark20.00610C79
00610C76 > 83C0 11 ADD
EAX, 11
00610C79 > 8038 2D CMP
BYTE PTR DS:[EAX], 2D 第十八個字元是否是“-”
00610C7C . 0F85 19010000 JNZ 3DMark20.00610D9B 從這裡知道,註冊碼採用
00610C82 . 6A 05 PUSH 5 xxxxx-xxxxx-xxxxx-xxxxx的格式
00610C84 . 53 PUSH
EBX
00610C85 . 8D4424 18 LEA EAX, DWORD
PTR SS:[ESP+18]
00610C89 . 50 PUSH
EAX
00610C8A . 8BCE MOV
ECX, ESI
........
於是在00610C8A處下一斷點,按F9換到3dmark2001se下,重新輸入註冊試驗碼:12345-67890-12345-67890。點OK後按F9直到00610C8A,跟著程式走一遍,會輕而易舉地發現下面的程式把註冊試驗碼中間的“-”去掉,成為12345678901234567890的形式。由於Ollydbg的跟蹤結果會隨時顯示在暫存器對話方塊中,我們可以非常清楚地看到轉換後的註冊碼,同時,我們也可以從函式名稱上大致知道這個函式是做什麼的,這裡就不再具體分析了。繼續跟到如下程式碼處:
00611211 |> 8B46
04 /MOV EAX, DWORD PTR DS:[ESI+4]
00611214 |. 85C0 |TEST
EAX, EAX
00611216 |. 75 07 |JNZ
SHORT 3DMark20.0061121F
00611218 |. A1 5CF77500 |MOV EAX, DWORD PTR
DS:[<&MSVCP60.?_C@>
0061121D |. EB 02 |JMP
SHORT 3DMark20.00611221
0061121F |> 03C2 |ADD
EAX, EDX
00611221 |> 8B4C24 1C |MOV ECX,
DWORD PTR SS:[ESP+1C]
00611225 |. 8B71 08 |MOV ESI,
DWORD PTR DS:[ECX+8]
00611228 |. 85F6 |TEST
ESI, ESI
0061122A |. 8A00 |MOV
AL, BYTE PTR DS:[EAX]
0061122C |. 884424 13 |MOV BYTE PTR
SS:[ESP+13], AL
00611230 |. 76 3E |JBE
SHORT 3DMark20.00611270
00611232 |. 83FE 01 |CMP ESI,
1
00611235 |. 72 39 |JB
SHORT 3DMark20.00611270
00611237 |. 8B79 04 |MOV EDI,
DWORD PTR DS:[ECX+4]
0061123A |. 0FBEE8 |MOVSX EBP,
AL
0061123D |. 56 |PUSH
ESI
0061123E |. 55 |PUSH
EBP
0061123F |. 57 |PUSH
EDI
00611240 |. FFD3 |CALL
EBX
; msvcrt.memchr
00611242 |. 83C4 0C |ADD ESP,
0C
00611245 |. 85C0 |TEST
EAX, EAX
00611247 |. 74 1F |JE
SHORT 3DMark20.00611268
00611249 |> 8A10 |/MOV
DL, BYTE PTR DS:[EAX]
0061124B |. 8D4C24 13 ||LEA ECX, DWORD
PTR SS:[ESP+13]
0061124F |. 3A11 ||CMP
DL, BYTE PTR DS:[ECX]
00611251 |. 74 36 ||JE
SHORT 3DMark20.00611289
00611253 |. 2BF8 ||SUB
EDI, EAX
00611255 |. 8D743E FF ||LEA ESI, DWORD
PTR DS:[ESI+EDI-1]
00611259 |. 56 ||PUSH
ESI
0061125A |. 8D78 01 ||LEA EDI,
DWORD PTR DS:[EAX+1]
0061125D |. 55 ||PUSH
EBP
0061125E |. 57 ||PUSH
EDI
0061125F |. FFD3 ||CALL
EBX 這個Call把輸入的註冊碼換個形式。
00611261 |. 83C4 0C ||ADD ESP,
0C
00611264 |. 85C0 ||TEST
EAX, EAX
00611266 |.^ 75 E1 |\JNZ SHORT
3DMark20.00611249
00611268 |> 8B5424 14 |MOV EDX,
DWORD PTR SS:[ESP+14]
0061126C |. 8B7C24 24 |MOV EDI, DWORD
PTR SS:[ESP+24]
00611270 |> A1 E8F67500 |MOV EAX, DWORD
PTR DS:[<&MSVCP60.?npo>
00611275 |. 8B00 |MOV
EAX, DWORD PTR DS:[EAX]
00611277 |> 8B0D E8F67500 |MOV ECX, DWORD PTR
DS:[<&MSVCP60.?npo>; MSVCP60.?npos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@2IB
0061127D |. 3B01 |CMP
EAX, DWORD PTR DS:[ECX]
0061127F |. 74 1B |JE
SHORT 3DMark20.0061129C
00611281 |. 8B4F 04 |MOV ECX,
DWORD PTR DS:[EDI+4]
00611284 |. 890491 |MOV
DWORD PTR DS:[ECX+EDX*4], EAX 轉換後的註冊碼儲存
00611287 |. EB 22 |JMP
SHORT 3DMark20.006112AB
00611289 |> 8B4C24 1C |MOV ECX,
DWORD PTR SS:[ESP+1C]
0061128D |. 8B51 04 |MOV EDX,
DWORD PTR DS:[ECX+4]
00611290 |. 8B7C24 24 |MOV EDI, DWORD
PTR SS:[ESP+24]
00611294 |. 2BC2 |SUB
EAX, EDX
00611296 |. 8B5424 14 |MOV EDX, DWORD
PTR SS:[ESP+14]
0061129A |.^ EB DB |JMP SHORT
3DMark20.00611277
0061129C |> 8B47 04 |MOV
EAX, DWORD PTR DS:[EDI+4]
0061129F |. C70490 FFFFFF>|MOV DWORD PTR DS:[EAX+EDX*4],
-1
006112A6 |. C64424 12 00 |MOV BYTE PTR SS:[ESP+12],
0
006112AB |> 8B7424 20 |MOV ESI,
DWORD PTR SS:[ESP+20]
006112AF |. 8B46 08 |MOV EAX,
DWORD PTR DS:[ESI+8]
006112B2 |. 42 |INC
EDX 迴圈次數加1
006112B3 |. 3BD0 |CMP
EDX, EAX
006112B5 |. 895424 14 |MOV DWORD PTR
SS:[ESP+14], EDX 迴圈20次,註冊碼位數
006112B9 |.^ 0F82 52FFFFFF \JB 3DMark20.00611211
上面的程式將把註冊碼轉換成另一種形式。這裡要注意比較原碼和轉換碼,發現其中的一一對應關係,以方便後面找到真正的註冊碼。由於我們所用的試驗碼排列有序,可以清楚地看到這種對應關係,即:1->18;2->19;3->1A;4->1B;5->1C;6->1D;7->1E;8->1F;9->20;0->17。那字母呢?也很簡單,如果你不想費腦筋把Call
EBX弄清楚的話,可直接把試驗碼換成ABCDE-FGHIJ-KLMNO-PQRST,然後看看轉換後的結果就行了。結果是A->00;B->01;C->03;D->04;......還有一點要說明一下的是轉換後的註冊碼是以DWord形式儲存的,也就是說,我們的試驗碼轉換成:
18 00 00 00 19 00 00 00 1A
00 00 00 1B 00 00 00
1C 00 00 00 1D 00 00 00 1E
00 00 00 1F 00 00 00
20 00 00 00 17 00 00 00 18
00 00 00 19 00 00 00
1A 00 00 00 1B 00 00 00 1C
00 00 00 1D 00 00 00
1E 00 00 00 1F 00 00 00 20
00 00 00 17 00 00 00
繼續跟程式,到達如下關鍵地方:
0061079A > 8B4C24
14 MOV ECX, DWORD PTR SS:[ESP+14] 註冊碼的判斷以5位為單位
0061079E . 8B51 08 MOV EDX,
DWORD PTR DS:[ECX+8]
006107A1 . 8B41 0C MOV EAX,
DWORD PTR DS:[ECX+C]
006107A4 . 8B69 04 MOV EBP,
DWORD PTR DS:[ECX+4]
006107A7 . 8B7424 28 MOV ESI, DWORD
PTR SS:[ESP+28] ESI賦值21
006107AB . 03C2 ADD
EAX, EDX
006107AD . 8B11 MOV
EDX, DWORD PTR DS:[ECX]
006107AF . 03C5 ADD
EAX, EBP
006107B1 . 03C2 ADD
EAX, EDX 將前4個數字累加
006107B3 . 33D2 XOR
EDX, EDX EDX清零
006107B5 . F7F6 DIV
ESI 累加值除以21
006107B7 . 8B59 10 MOV EBX,
DWORD PTR DS:[ECX+10] 將第5位送入EBX
006107BA . 3BDA CMP
EBX, EDX EBX與餘數比較
006107BC . 0F85 10010000 JNZ 3DMark20.006108D2 不相等的話玩完(爆破點)
006107C2 . 8B51 1C MOV EDX,
DWORD PTR DS:[ECX+1C] 繼續比較下5位
006107C5 . 8B41 20 MOV EAX,
DWORD PTR DS:[ECX+20]
006107C8 . 8B59 18 MOV EBX,
DWORD PTR DS:[ECX+18]
006107CB . 03C2 ADD
EAX, EDX
006107CD . 8B51 14 MOV EDX,
DWORD PTR DS:[ECX+14]
006107D0 . 03C3 ADD
EAX, EBX
006107D2 . 03C2 ADD
EAX, EDX
006107D4 . 33D2 XOR
EDX, EDX
006107D6 . F7F6 DIV
ESI
006107D8 . 8B69 24 MOV EBP,
DWORD PTR DS:[ECX+24]
006107DB . 3BEA CMP
EBP, EDX
006107DD . 0F85 EF000000 JNZ 3DMark20.006108D2 不相等跳走(爆破點)
006107E3 . 8B51 30 MOV EDX,
DWORD PTR DS:[ECX+30] 再比較下5位
006107E6 . 8B41 34 MOV EAX,
DWORD PTR DS:[ECX+34]
006107E9 . 03C2 ADD
EAX, EDX
006107EB . 0341 2C ADD EAX,
DWORD PTR DS:[ECX+2C]
006107EE . 0341 28 ADD EAX,
DWORD PTR DS:[ECX+28]
006107F1 . 33D2 XOR
EDX, EDX
006107F3 . F7F6 DIV
ESI
006107F5 . 8B59 38 MOV EBX,
DWORD PTR DS:[ECX+38]
006107F8 . 3BDA CMP
EBX, EDX
006107FA . 0F85 D2000000 JNZ 3DMark20.006108D2 不相等再跳走(爆破點)
00610800 . 8B51 10 MOV EDX,
DWORD PTR DS:[ECX+10] 第一次判斷的餘數
00610803 . 8D042B LEA
EAX, DWORD PTR DS:[EBX+EBP] 第二次判斷的餘數
00610806 . 03C2 ADD
EAX, EDX 三次餘數和
00610808 . 33D2 XOR
EDX, EDX
0061080A . F7F6 DIV
ESI 除以21H
0061080C . 8B79 3C MOV EDI,
DWORD PTR DS:[ECX+3C]
0061080F . 3BFA CMP
EDI, EDX 餘數與第16位比較
00610811 . 0F85 B9000000 JNZ 3DMark20.006108D0 第16位的判斷(爆破點)
00610817 . 8B51 24 MOV EDX,
DWORD PTR DS:[ECX+24] 第二次判斷的餘數
0061081A . 8D041F LEA
EAX, DWORD PTR DS:[EDI+EBX] 第三、四次判斷的餘數
0061081D . 03C2 ADD
EAX, EDX 餘數和
0061081F . 33D2 XOR
EDX, EDX
00610821 . F7F6 DIV
ESI 除以21H
00610823 . 8B69 40 MOV EBP,
DWORD PTR DS:[ECX+40]
00610826 . 3BEA CMP
EBP, EDX
00610828 . 0F85 A2000000 JNZ 3DMark20.006108D0 第17位的判斷(爆破點)
0061082E . 8D042F LEA
EAX, DWORD PTR DS:[EDI+EBP]
00610831 . 03C3 ADD
EAX, EBX
00610833 . 33D2 XOR
EDX, EDX
00610835 . F7F6 DIV
ESI
00610837 . 8B59 44 MOV EBX,
DWORD PTR DS:[ECX+44]
0061083A . 3BDA CMP
EBX, EDX
0061083C . 0F85 8E000000 JNZ 3DMark20.006108D0 第18位的判斷(爆破點)
00610842 . 8D042B LEA
EAX, DWORD PTR DS:[EBX+EBP]
00610845 . 03C7 ADD
EAX, EDI
00610847 . 33D2 XOR
EDX, EDX
00610849 . F7F6 DIV
ESI
0061084B . 8B41 48 MOV EAX,
DWORD PTR DS:[ECX+48]
0061084E . 3BC2 CMP
EAX, EDX
00610850 . 75 7E JNZ
SHORT 3DMark20.006108D0 第19位的判斷(爆破點)
00610852 . 03C3 ADD
EAX, EBX
00610854 . 03C5 ADD
EAX, EBP
00610856 . 33D2 XOR
EDX, EDX
00610858 . F7F6 DIV
ESI
0061085A . 3951 4C CMP DWORD
PTR DS:[ECX+4C], EDX
0061085D . 75 71 JNZ
SHORT 3DMark20.006108D0 第20位的判斷(爆破點)
0061085F . 51 PUSH
ECX
00610860 . E8 5FE00200 CALL <JMP.&MFC42.#825_??3@YAXPAX@Z>
00610865 . 8B4C24 28 MOV ECX, DWORD
PTR SS:[ESP+28]
00610869 . 33F6 XOR
ESI, ESI
0061086B . 83C4 04 ADD ESP,
4
0061086E . 3BCE CMP
ECX, ESI
00610870 . 897424 14 MOV DWORD PTR
SS:[ESP+14], ESI
00610874 . 897424 18 MOV DWORD PTR
SS:[ESP+18], ESI
00610878 . 897424 1C MOV DWORD PTR
SS:[ESP+1C], ESI
0061087C . 74 1C JE
SHORT 3DMark20.0061089A
0061087E . 8A41 FF MOV AL,
BYTE PTR DS:[ECX-1]
00610881 . 84C0 TEST
AL, AL
00610883 . 74 0B JE
SHORT 3DMark20.00610890
00610885 . 3C FF CMP
AL, 0FF
00610887 . 74 07 JE
SHORT 3DMark20.00610890
00610889 . FEC8 DEC
AL
0061088B . 8841 FF MOV BYTE
PTR DS:[ECX-1], AL
0061088E . EB 0A JMP
SHORT 3DMark20.0061089A
00610890 > 49 DEC
ECX
00610891 . 51 PUSH
ECX
00610892 . E8 2DE00200 CALL <JMP.&MFC42.#825_??3@YAXPAX@Z>
00610897 . 83C4 04 ADD ESP,
4
0061089A > 8B4C24 34 MOV ECX,
DWORD PTR SS:[ESP+34]
0061089E . 3BCE CMP
ECX, ESI
006108A0 . 897424 24 MOV DWORD PTR
SS:[ESP+24], ESI
006108A4 . 897424 28 MOV DWORD PTR
SS:[ESP+28], ESI
006108A8 . 897424 2C MOV DWORD PTR
SS:[ESP+2C], ESI
006108AC . 74 1E JE
SHORT 3DMark20.006108CC
006108AE . 8A41 FF MOV AL,
BYTE PTR DS:[ECX-1]
006108B1 . 84C0 TEST
AL, AL
006108B3 . 74 0D JE
SHORT 3DMark20.006108C2
006108B5 . 3C FF CMP
AL, 0FF
006108B7 . 74 09 JE
SHORT 3DMark20.006108C2
006108B9 . FEC8 DEC
AL
006108BB . 8841 FF MOV BYTE
PTR DS:[ECX-1], AL
006108BE . B0 01 MOV
AL, 1
006108C0 . EB 7B JMP
SHORT 3DMark20.0061093D
006108C2 > 49 DEC
ECX
006108C3 . 51 PUSH
ECX
006108C4 . E8 FBDF0200 CALL <JMP.&MFC42.#825_??3@YAXPAX@Z>
006108C9 . 83C4 04 ADD ESP,
4
006108CC > B0 01 MOV
AL, 1
006108CE . EB 6D JMP
SHORT 3DMark20.0061093D
006108D0 > 33FF XOR
EDI, EDI
006108D2 > 51 PUSH
ECX
006108D3 . E8 ECDF0200 CALL <JMP.&MFC42.#825_??3@YAXPAX@Z>
演算法分析:註冊碼判斷正確與否是以5位為單位進行的。前三次判斷(即前15位註冊碼)是一樣的,即將前四位累加,然後除以21H,將餘數與第五位比較,相等的話再進行下一次判斷。以試驗碼為例,判斷過程為:1->18;2->19;3->1A;4->1B,累加進來為66H,除以21H,餘數是3。03H對應的原碼是字母D。為方便我們找到可用的註冊碼,我們可以把試驗碼的前15位換成1234D-1234D-1234D-XXXXX。注意:程式會自動把輸入的小寫字母變成大寫字母。
轉換碼為: 18 00 00 00 19 00 00 00 1A 00 00 00 1B 00 00 00
03 00 00 00 18 00 00 00 19
00 00 00 1A 00 00 00
1B 00 00 00 03 00 00 00 18
00 00 00 19 00 00 00
1A 00 00 00 1B 00 00 00 03
00 00 00 14 00 00 00
14 00 00 00 14 00 00 00 14
00 00 00 14 00 00 00
從第16位開始,註冊碼判斷開始改變。
第16位:前三次餘數和(03+03+03=09)除以21H的餘數(09)與第16位比較,09H對應原碼字母L
第17位:第四次判斷的餘數(09),加上第二、三次判斷的餘數,即(03+03+09=0F)除以21H的餘數(0F)與第17位比較,0FH對應原碼字母S。
第18位:第三、四、五次判斷的餘數和,即(03+09+0F=1B)除以21H的餘數(1B),與第18位比較,1BH對應原碼數字4。
第19位:第四、五、六次判斷的餘數和,即(09+0F+1B=33)除以21H的餘數(12),與第19位比較,12H對應原碼字母V。
第20位:第五、六、七次判斷的餘數和,即(0F+1B+12=3C)除以21H的餘數(1B),與第20位比較,1BH對應原碼數字4。
綜上所述,第16-20位註冊碼是LS4V4,可用的完整註冊碼為:1234D-1234D-1234D-LS4V4.
弄清楚了註冊碼的生成過程,就可以寫序號產生器了。當然了,如果不想費力氣找註冊碼的話,也可以爆破的,爆破點我已經在程式碼中標出了。
整個註冊過程使用者名稱並不參與計算,你可以隨便輸入你想用的使用者名稱!使用者名稱和註冊碼儲存在登錄檔中:
[HKEY_LOCAL_MACHINE\SOFTWARE\MadOnion.com\Registration2001]
"3DMarkRegName"="Hartnett"
"3DMarkRegKey"="1234D1234D1234DLS4V4"
但願我把上述過程寫得比較清楚了,呵呵!
相關文章
- 第七章-尋找軟體的註冊碼2015-11-15
- 用ollyDbg尋找VB程式的註冊核心的一點思路2003-06-20
- 用ollydbg找eBook Edit Pro v3.21的註冊碼2003-02-12
- UltraEdit32 v10找註冊碼+去暗樁2015-11-15
- 申請加入CNCG破文-小李登錄檔大師D註冊碼法 (2千字)2001-11-07
- 如何尋找優質的資料標註公司?2023-02-06
- 找論文程式碼2018-04-28
- Emeditor 註冊碼2017-08-14
- WebStorm註冊碼2014-04-29WebORM
- 超級魔法兔子設定
V4.0破 解(得到完全註冊碼)2002-01-14
- IP搜尋客 1.61 註冊碼計算 (2千字)2000-05-16
- Amazon面試題:尋找最長迴文子串2018-03-12面試題
- Android 尋找極限編碼的「快感」2019-02-13Android
- Qt核心剖析: 尋找 QObject 的原始碼薦2010-05-27QTObject原始碼
- 尋找Java程式碼生成器2013-03-21Java
- PhpStorm註冊碼2020-04-07PHPORM
- Navicat for MySQL註冊碼2020-04-07MySql
- SecureCRT 7 註冊碼2016-09-02Securecrt
- 註冊中心 Eureka 原始碼解析 —— 應用例項註冊發現(一)之註冊2019-03-03原始碼
- SpringCloud 教程 | 第一篇: 服務的註冊與發現(Eureka)2019-03-04SpringGCCloud
- Viscosity for Mac 註冊碼:2019-09-19Mac
- PLSQL Developer 12 註冊碼2018-06-07SQLDeveloper
- PLSQL Developer 9.0註冊碼2013-01-22SQLDeveloper
- 尋找JAVA人材!2008-11-26Java
- sublime text for Mac註冊啟用 sublime text4註冊碼2023-10-11Mac
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- Microsoft賬戶註冊怎麼弄 Microsoft賬戶註冊詳細圖文步驟2022-09-14ROS
- 如何計算 “IQ網際搜尋家99” 註冊碼 (4千字)2000-05-15
- VMware Workstation各個版本的註冊碼2020-11-13
- 申請加入BCG破文3--加密精靈EncryptGenie22註冊碼破解及序號產生器制作 (5千字)2001-10-28加密
- wing ftp server 註冊碼2020-11-23FTPServer
- phpstrom 註冊碼獲取2018-05-23PHP
- IntelliJ IDEA 註冊碼2017-05-05IntelliJIdea
- Pycharm安裝破解 註冊碼2017-06-25PyCharm
- Myeclipse10註冊碼2014-05-20Eclipse
- myeclipse獲取註冊碼2011-12-07Eclipse
- Theme Builder註冊碼分析2015-11-15UI
- ShadowDefender 註冊碼 分析2024-08-17