貼一個朋友問的關於《學生評語系統》的破解過程14千字)
(1)
該軟體加了PEcompact殼,可以用風飄雪的脫殼機脫殼,然後就能看到它是用DELPHI編
寫的。用W32dasm8反彙編。
試著執行軟體,進行註冊,先要讓你填使用者名稱和單位、地址,注意字數要夠。然後點選生成
註冊碼檔案。分析註冊碼檔案,看到裡面有一行字串:
userid=0310206410913919500818002711023914226309313612401220911328701503705316115
2071115115276163151041148019121215163174294049092008099084062121169134235004132
2550
點選註冊,提示:沒有有效的註冊資訊。在W32dasm反彙編的檔案中搜尋:“註冊”
:0052C3AC E86F03F2FF call 0044C720
:0052C3B1 837DE800 cmp
dword ptr [ebp-18], 00000000
:0052C3B5 7522
jne 0052C3D9 //在這跳,為了更好的觀
察,我先不讓它強行跳,
看如何才能真正的跳。
:0052C3B7 6A10
push 00000010
* Possible StringData Ref from Code Obj ->"錯誤"
|
:0052C3B9 B9E4C45200 mov ecx,
0052C4E4
* Possible StringData Ref from Code Obj ->"檔案中不存在有效的註冊資訊"
|
:0052C3BE BAECC45200 mov edx,
0052C4EC
:0052C3C3 A1F0285600 mov eax,
dword ptr [005628F0]
:0052C3C8 8B00
mov eax, dword ptr [eax]
:0052C3CA E8F909F4FF call 0046CDC8
//出現錯誤,看哪能跳過
:0052C3CF E8647FEDFF call 00404338
:0052C3D4 E9A6000000 jmp 0052C47F
? Referenced by a (U)nconditional or (C)onditional Jump at
Address:
》》》
》》》
在W32dasm反彙編的檔案中搜尋:“userid”,找到:
:0050B653 8D4598
lea eax, dword ptr [ebp-68]
:0050B656 50
push eax
* Possible StringData Ref from Code Obj ->"userid" //關鍵字
|
:0050B657 B9CCBB5000 mov ecx,
0050BBCC
* Possible StringData Ref from Code Obj ->"register" //關鍵字,所以在註冊檔案中寫入一
行。
|
:0050B65C BAB8BB5000 mov edx,
0050BBB8
註冊檔案的內容設為:
userid=0310206410913919500818002711023914226309313612401220911328701503705316115
2071115115276163151041148019121215163174294049092008099084062121169134235004132
2550
register=67889898487684685674683228091890489843747578474732873877883684383738749
8739873987398574874987378436268374854759859875876985798748739473547598798798449
3759873(注:數字是亂填的)
這回上面的錯誤提示沒有了,接著看:
由上面跳到這:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052C3B5(C)
|
:0052C3D9 33C0
xor eax, eax
:0052C3DB 5A
pop edx
:0052C3DC 59
pop ecx
:0052C3DD 59
pop ecx
:0052C3DE 648910
mov dword ptr fs:[eax], edx
:0052C3E1 68F8C35200 push 0052C3F8
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052C3F6(U)
|
:0052C3E6 B201
mov dl, 01
:0052C3E8 8B45F8
mov eax, dword ptr [ebp-08]
:0052C3EB 8B08
mov ecx, dword ptr [eax]
:0052C3ED FF51FC
call [ecx-04]
:0052C3F0 C3
ret
:0052C3F1 E99A7DEDFF jmp 00404190
:0052C3F6 EBEE
jmp 0052C3E6
:0052C3F8 A1A4245600 mov eax,
dword ptr [005624A4]
:0052C3FD C60001
mov byte ptr [eax], 01
:0052C400 8D55E4
lea edx, dword ptr [ebp-1C]
:0052C403 8B45FC
mov eax, dword ptr [ebp-04]
:0052C406 8B8008030000 mov eax, dword
ptr [eax+00000308]
:0052C40C E80F03F2FF call 0044C720
:0052C411 8B4DE4
mov ecx, dword ptr [ebp-1C]
:0052C414 8B55F4
mov edx, dword ptr [ebp-0C]
:0052C417 B001
mov al, 01
:0052C419 E82202FEFF call 0050C640
//註冊判斷關鍵CALL
:0052C41E E86531FEFF call 0050F588
:0052C423 A124265600 mov eax,
dword ptr [00562624]
:0052C428 8B00
mov eax, dword ptr [eax]
:0052C42A E831D3EDFF call 00409760
:0052C42F E8901BFEFF call 0050DFC4
:0052C434 A1A4245600 mov eax,
dword ptr [005624A4]
:0052C439 803800
cmp byte ptr [eax], 00 //注意看EAX中的地址:
0056446C,下中斷BPM
0056446C,重新跟蹤。
:0052C43C 741A
je 0052C458 //關鍵跳轉,直接改雖然可以看到
註冊正確的提示,但不行。
:0052C43E 6A40
push 00000040
* Possible StringData Ref from Code Obj ->"提示"
|
:0052C440 B908C55200 mov ecx,
0052C508
* Possible StringData Ref from Code Obj ->"註冊成功!感謝您的支援!"
|
:0052C445 BA10C55200 mov edx,
0052C510
:0052C44A A1F0285600 mov eax,
dword ptr [005628F0]
:0052C44F 8B00
mov eax, dword ptr [eax]
:0052C451 E87209F4FF call 0046CDC8
:0052C456 EB18
jmp 0052C470
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052C43C(C)
|
:0052C458 6A10
push 00000010
* Possible StringData Ref from Code Obj ->"錯誤"
|
:0052C45A B9E4C45200 mov ecx,
0052C4E4
* Possible StringData Ref from Code Obj ->"註冊失敗,請與作者聯絡!"
|
:0052C45F BA2CC55200 mov edx,
0052C52C
:0052C464 A1F0285600 mov eax,
dword ptr [005628F0]
:0052C469 8B00
mov eax, dword ptr [eax]
:0052C46B E85809F4FF call 0046CDC8
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052C456(U)
|
:0052C470 8B45FC
mov eax, dword ptr [ebp-04]
:0052C473 E824CFF3FF call 0046939C
:0052C478 C6054445560001 mov byte ptr [00564544],
01
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0052C32A(C), :0052C3D4(U)
|
:0052C47F 33C0
xor eax, eax
:0052C481 5A
pop edx
:0052C482 59
pop ecx
:0052C483 59
pop ecx
:0052C484 648910
mov dword ptr fs:[eax], edx
:0052C487 68B9C45200 push 0052C4B9
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0052C4B7(U)
|
:0052C48C 8D45E4
lea eax, dword ptr [ebp-1C]
:0052C48F BA02000000 mov edx,
00000002
:0052C494 E8D383EDFF call 0040486C
:0052C499 8D45EC
lea eax, dword ptr [ebp-14]
:0052C49C E8A783EDFF call 00404848
:0052C4A1 8D45F0
lea eax, dword ptr [ebp-10]
:0052C4A4 E89F83EDFF call 00404848
:0052C4A9 8D45F4
lea eax, dword ptr [ebp-0C]
:0052C4AC E89783EDFF call 00404848
:0052C4B1 C3
ret
0056446C是關鍵的判斷註冊與否的地址,但每次執行時軟體要對它重新判斷賦值。呼叫的
程式碼段和上面判斷註冊時是同一段。其關鍵CALL是上面的0052C419處的0050C640:
* Referenced by a CALL at Addresses:
|:0052C419 , :0052C60A , :0055E0A2
|
:0050C640 55
push ebp
:0050C641 8BEC
mov ebp, esp
。。。《略》 。。。
:0050C680 8945EC
mov dword ptr [ebp-14], eax
:0050C683 C645F300 mov
[ebp-0D], 00
:0050C687 C6056C44560000 mov byte ptr [0056446C],
00 //賦初始值
:0050C68E 8D45E0
lea eax, dword ptr [ebp-20]
* Possible StringData Ref from Code Obj ->"\wlm.dat"
|
:0050C691 B9FCCB5000 mov ecx,
0050CBFC
:0050C696 8B1570445600 mov edx, dword
ptr [00564470]
:0050C69C E8AB84EFFF call 00404B4C
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050C62D(C)
|
:0050C6A1 8B45E0
mov eax, dword ptr [ebp-20]
* Possible StringData Ref from Code Obj ->"wlm"
|
:0050C6A4 BA10CC5000 mov edx,
0050CC10
:0050C6A9 E83E190000 call 0050DFEC
:0050C6AE B201
mov dl, 01
:0050C6B0 A144304700 mov eax,
dword ptr [00473044]
:0050C6B5 E88A6AF6FF call 00473144
:0050C6BA 8945E8
mov dword ptr [ebp-18], eax
:0050C6BD 807DFF00 cmp
byte ptr [ebp-01], 00
:0050C6C1 0F8552020000 jne 0050C919
:0050C6C7 BA02000080 mov edx,
80000002
:0050C6CC 8B45E8
mov eax, dword ptr [ebp-18]
:0050C6CF E8106BF6FF call 004731E4
:0050C6D4 B101
mov cl, 01
* Possible StringData Ref from Code Obj ->"Software\學生評語管理系統" //寫入登錄檔
|
:0050C6D6 BA1CCC5000 mov edx,
0050CC1C
:0050C6DB 8B45E8
mov eax, dword ptr [ebp-18]
:0050C6DE E8656BF6FF call 00473248
:0050C6E3 84C0
test al, al
:0050C6E5 7413
je 0050C6FA
:0050C6E7 8B0D70445600 mov ecx, dword
ptr [00564470]
* Possible StringData Ref from Code Obj ->"installpath" //寫入登錄檔
|
:0050C6ED BA40CC5000 mov edx,
0050CC40
:0050C6F2 8B45E8
mov eax, dword ptr [ebp-18]
:0050C6F5 E8EA6CF6FF call 004733E4
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050C6E5(C)
|
:0050C6FA 8B45E8
mov eax, dword ptr [ebp-18]
:0050C6FD E8B26AF6FF call 004731B4
:0050C702 BA02000080 mov edx,
80000002
:0050C707 8B45E8
mov eax, dword ptr [ebp-18]
:0050C70A E8D56AF6FF call 004731E4
:0050C70F B101
mov cl, 01
* Possible StringData Ref from Code Obj ->"Software\Microsoft\Windows\CurrentVersion"
////寫
入登錄檔中
的位置
|
:0050C711 BA54CC5000 mov edx,
0050CC54
:0050C716 8B45E8
mov eax, dword ptr [ebp-18]
:0050C719 E82A6BF6FF call 00473248
:0050C71E 84C0
test al, al
:0050C720 0F84E3010000 je 0050C909
* Possible StringData Ref from Code Obj ->"ProductWRemark" //登錄檔中關鍵性的鍵值,是
否註冊,是否到使用次數等都決定於它,後面還會出現多處。
|
:0050C726 BA88CC5000 mov edx,
0050CC88
。。。《略》 。。。
:0050C74C 50
push eax
:0050C74D 8D4DD0
lea ecx, dword ptr [ebp-30]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C750 BA88CC5000 mov edx,
0050CC88
。。。《略》 。。。
:0050C787 8D4DC4
lea ecx, dword ptr [ebp-3C]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C78A BA88CC5000 mov edx,
0050CC88
。。。《略》 。。。
:0050C880 66BA97FF mov
dx, FF97
:0050C884 E88FD5FFFF call 00509E18
:0050C889 8B4DC0
mov ecx, dword ptr [ebp-40]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C88C BA88CC5000 mov edx,
0050CC88
:0050C891 8B45E8
mov eax, dword ptr [ebp-18]
。。。《略》 。。。
:0050C8F4 E81FD5FFFF call 00509E18
:0050C8F9 8B4DB0
mov ecx, dword ptr [ebp-50]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C8FC BA88CC5000 mov edx,
0050CC88
。。。《略》 。。。
:0050C92F E8B068F6FF call 004731E4
:0050C934 B101
mov cl, 01
* Possible StringData Ref from Code Obj ->"Software\Microsoft\Windows\CurrentVersion"
|
:0050C936 BA54CC5000 mov edx,
0050CC54
:0050C93B 8B45E8
mov eax, dword ptr [ebp-18]
:0050C93E E80569F6FF call 00473248
:0050C943 84C0
test al, al
:0050C945 0F84AF010000 je 0050CAFA
:0050C94B 8D45E4
lea eax, dword ptr [ebp-1C]
:0050C94E 8B55F4
mov edx, dword ptr [ebp-0C]
:0050C951 E88A7FEFFF call 004048E0
:0050C956 8D55A4
lea edx, dword ptr [ebp-5C]
:0050C959 8B45E4
mov eax, dword ptr [ebp-1C] //送入register值
:0050C95C E843CAEFFF call 004093A4
:0050C961 8B55A4
mov edx, dword ptr [ebp-5C]
:0050C964 8B45F8
mov eax, dword ptr [ebp-08] //送入usterid值
:0050C967 E8C8DDFFFF call 0050A734
//關鍵判斷CALL,想知道演算法
的話,就跟進去。我比較懶。
:0050C96C 84C0
test al, al
:0050C96E 0F8441010000 je 0050CAB5
//此處不讓它跳就成功一半了!!
:0050C974 33C0
xor eax, eax
:0050C976 55
push ebp
:0050C977 68E9C95000 push 0050C9E9
:0050C97C 64FF30
push dword ptr fs:[eax]
:0050C97F 648920
mov dword ptr fs:[eax], esp
:0050C982 E8012C0000 call 0050F588
:0050C987 8D4598
lea eax, dword ptr [ebp-68]
:0050C98A B9C4CC5000 mov ecx,
0050CCC4
:0050C98F 8B1580445600 mov edx, dword
ptr [00564480]
:0050C995 E8B281EFFF call 00404B4C
:0050C99A 8B4598
mov eax, dword ptr [ebp-68]
:0050C99D 8D4D9C
lea ecx, dword ptr [ebp-64]
:0050C9A0 66BA14E2 mov
dx, E214
:0050C9A4 E86FD4FFFF call 00509E18
:0050C9A9 8B459C
mov eax, dword ptr [ebp-64]
:0050C9AC 8D4DA0
lea ecx, dword ptr [ebp-60]
:0050C9AF 66BA97FF mov
dx, FF97
:0050C9B3 E860D4FFFF call 00509E18
:0050C9B8 8B4DA0
mov ecx, dword ptr [ebp-60]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C9BB BA88CC5000 mov edx,
0050CC88
:0050C9C0 8B45E8
mov eax, dword ptr [ebp-18]
:0050C9C3 E81C6AF6FF call 004733E4
:0050C9C8 C6056C44560001 mov byte ptr [0056446C],
01 //此處賦註冊正確的
值。
:0050C9CF 8B45E8
mov eax, dword ptr [ebp-18]
:0050C9D2 E8DD67F6FF call 004731B4
:0050C9D7 8B45E8
mov eax, dword ptr [ebp-18]
:0050C9DA E81D70EFFF call 004039FC
:0050C9DF 33C0
xor eax, eax
:0050C9E1 5A
pop edx
:0050C9E2 59
pop ecx
:0050C9E3 59
pop ecx
:0050C9E4 648910
mov dword ptr fs:[eax], edx
:0050C9E7 EB0A
jmp 0050C9F3
:0050C9E9 E9EE74EFFF jmp 00403EDC
:0050C9EE E81579EFFF call 00404308
》》》 》》》
總結:在0050C96E處下斷點,改跳轉,就顯示註冊成功了,將登錄檔中值匯出成註冊檔案。
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"ProductWRemark"="BB21C32E08E9F15F750A"
注意:經過上面的修改並未破解成功,請看(2)。
(2)
大家好,上次的破解留了一個小尾巴,就是作者放了一個暗樁,導致程式執行三分鐘之後自動退出。這回解決了這個問題,看下面:
:0050C961 8B55A4 mov edx, dword ptr [ebp-5C]
:0050C964 8B45F8 mov eax, dword ptr [ebp-08]
:0050C967 E8C8DDFFFF call 0050A734
:0050C96C 84C0 test al, al
:0050C96E 0F8441010000 je 0050CAB5 //上次告訴大家改這個跳轉的。
:0050C974 33C0 xor eax, eax
:0050C976 55 push ebp
:0050C977 68E9C95000 push 0050C9E9
:0050C97C 64FF30 push dword ptr fs:[eax]
:0050C97F 648920 mov dword ptr fs:[eax], esp
:0050C982 E8012C0000 call 0050F588
:0050C987 8D4598 lea eax, dword ptr [ebp-68]
:0050C98A B9C4CC5000 mov ecx, 0050CCC4
:0050C98F 8B1580445600 mov edx, dword ptr [00564480]
:0050C995 E8B281EFFF call 00404B4C
:0050C99A 8B4598 mov eax, dword ptr [ebp-68]
:0050C99D 8D4D9C lea ecx, dword ptr [ebp-64]
:0050C9A0 66BA14E2 mov dx, E214
:0050C9A4 E86FD4FFFF call 00509E18
:0050C9A9 8B459C mov eax, dword ptr [ebp-64]
:0050C9AC 8D4DA0 lea ecx, dword ptr [ebp-60]
:0050C9AF 66BA97FF mov dx, FF97
:0050C9B3 E860D4FFFF call 00509E18
:0050C9B8 8B4DA0 mov ecx, dword ptr [ebp-60]
* Possible StringData Ref from Code Obj ->"ProductWRemark"
|
:0050C9BB BA88CC5000 mov edx, 0050CC88
:0050C9C0 8B45E8 mov eax, dword ptr [ebp-18]
:0050C9C3 E81C6AF6FF call 004733E4
:0050C9C8 C6056C44560001 mov byte ptr [0056446C], 01 //送註冊成功標誌,接著向下看
:0050C9CF 8B45E8 mov eax, dword ptr [ebp-18]
:0050C9D2 E8DD67F6FF call 004731B4
:0050C9D7 8B45E8 mov eax, dword ptr [ebp-18]
:0050C9DA E81D70EFFF call 004039FC
:0050C9DF 33C0 xor eax, eax
:0050C9E1 5A pop edx
:0050C9E2 59 pop ecx
:0050C9E3 59 pop ecx
:0050C9E4 648910 mov dword ptr fs:[eax], edx
:0050C9E7 EB0A jmp 0050C9F3
:0050C9E9 E9EE74EFFF jmp 00403EDC
:0050C9EE E81579EFFF call 00404308
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050C9E7(U)
|
:0050C9F3 33C0 xor eax, eax
:0050C9F5 55 push ebp
* Possible StringData Ref from Code Obj ->"u? "
|
:0050C9F6 6865CA5000 push 0050CA65
:0050C9FB 64FF30 push dword ptr fs:[eax]
:0050C9FE 648920 mov dword ptr fs:[eax], esp
:0050CA01 8D4594 lea eax, dword ptr [ebp-6C]
* Possible StringData Ref from Code Obj ->"\wcgipk.dll" //要向這個檔案中寫東西,這個檔案在哪?寫的是什麼?
ANSWER:原來註冊成功後,他不但象上次我說的那樣往登錄檔中寫東西,也生成了一個KEY檔案,就是wcgipk.dll嘍!放在C:\WINDOWS\SYSTEM目錄下。內容的形式是:
[register]
userid=510632020430861820451910210190621022870321460831522710451080891942471032811960840840312802670050940642890742350430050650
registerid=678898984876846856746832280918904898437475784747328738778836843837387498739873987398574874987378436268374854759859875876
可見這個檔案是關鍵。下面對反彙編後的檔案查詢“wcgipk.dll”字串。
|
:0050CA04 B9D0CC5000 mov ecx, 0050CCD0 //送入檔名地址
:0050CA09 8B1574445600 mov edx, dword ptr [00564474]
:0050CA0F E83881EFFF call 00404B4C
:0050CA14 8B4D94 mov ecx, dword ptr [ebp-6C]
:0050CA17 B201 mov dl, 01
* Possible StringData Ref from Code Obj ->"?G"
|
:0050CA19 A1F4204700 mov eax, dword ptr [004720F4]
。。。 。。。
經過上面說的查詢找到4個 相關地址:
0050B5AC 是暗樁的關鍵地址。
0050CA04 是註冊成功後建立此檔案,並向其中寫入內容。
005117CC 是當我們點選了幫助選單中的“關於”時,開啟此檔案從中轉換出註冊名和單位、地址資訊。
0052C06A 不詳,不過好象不是暗樁(大家可以幫忙測試一下)。
下面就到50B5AC處下斷點(前提是你像我上一篇中說的,已註冊成功),等待三分鐘後,在斷點處被攔下。接下來就是很長的一段註冊判斷,很麻煩的。好,下面看哪可以跳過判斷:
:0050B56D 59 pop ecx
:0050B56E 648910 mov dword ptr fs:[eax], edx
:0050B571 EB16 jmp 0050B589
:0050B573 E96489EFFF jmp 00403EDC
:0050B578 A1F0285600 mov eax, dword ptr [005628F0]
:0050B57D 8B00 mov eax, dword ptr [eax]
:0050B57F E8A017F6FF call 0046CD24
:0050B584 E87F8DEFFF call 00404308
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050B571(U)
|
:0050B589 837DF800 cmp dword ptr [ebp-08], 00000000
:0050B58D 0F8577050000 jne 0050BB0A //此處跳轉就可以不判斷了,我把50B589一句改為JMP 050BB0A,成功!!
:0050B593 33C0 xor eax, eax
:0050B595 55 push ebp
:0050B596 68D2BA5000 push 0050BAD2
:0050B59B 64FF30 push dword ptr fs:[eax]
:0050B59E 648920 mov dword ptr fs:[eax], esp
:0050B5A1 8B15BC285600 mov edx, dword ptr [005628BC]
:0050B5A7 8B12 mov edx, dword ptr [edx]
:0050B5A9 8D45C4 lea eax, dword ptr [ebp-3C]
* Possible StringData Ref from Code Obj ->"\wcgipk.dll"
|
:0050B5AC B990BB5000 mov ecx, 0050BB90
:0050B5B1 E89695EFFF call 00404B4C
:0050B5B6 8B4DC4 mov ecx, dword ptr [ebp-3C]
:0050B5B9 B201 mov dl, 01
* Possible StringData Ref from Code Obj ->"?G"
|
:0050B5BB A1F4204700 mov eax, dword ptr [004720F4]
:0050B5C0 E8DF6BF6FF call 004721A4
:0050B5C5 8945F0 mov dword ptr [ebp-10], eax
:0050B5C8 33C0 xor eax, eax
:0050B5CA 55 push ebp
:0050B5CB 68A3B65000 push 0050B6A3
:0050B5D0 64FF30 push dword ptr fs:[eax]
:0050B5D3 648920 mov dword ptr fs:[eax], esp
:0050B5D6 8B45E4 mov eax, dword ptr [ebp-1C]
除錯中注意到的內幕:
此係統的資料檔案是wlm.dat,它實際上是.mdb ACCESS型檔案,檔案的開啟密碼是:
“ooovvvwww”。可以看看他資料庫的設計思想了。
:0050CB0F 648920 mov dword ptr fs:[eax], esp
* Possible StringData Ref from Code Obj ->"Provider=Microsoft.Jet.OLEDB.4.0;Data "
->"Source="
|
:0050CB12 6838CD5000 push 0050CD38
:0050CB17 FF3570445600 push dword ptr [00564470]
* Possible StringData Ref from Code Obj ->"\wlm.dat;Persist Security Info=False;Jet "
->"OLEDB:Database Password=ooovvvwww" //看到了嗎?
|
:0050CB1D 6870CD5000 push 0050CD70
:0050CB22 8D4588 lea eax, dword ptr [ebp-78]
總結:
在除錯中發現作者在註冊問題上下了很大的功夫,關於註冊的地方特別多,這樣勢必會影響整個程式的執行效率,這個軟體是DELPHI寫的,本應執行起來效率很高,其實不然。所以我想作者不應把精力過多的放在防破解上。
相關文章
- WebTimeSync 5.2.0 破解過程 (14千字)2001-10-05Web
- supercleaner 2.0 超酷的系統清潔工具破解過程!
(3千字)2001-03-23
- 關於系統效能的一個問題2005-09-04
- 貼個程式的smc破解。 (1千字)2001-09-24
- 破解<<破解堅盾磁碟加密系統 V4.0>>的全過程 (10千字)2001-10-23加密
- 應妖二妖二的要求,貼上SHOWURL的破解過程。 (11千字)2001-05-05
- PassWD2000破解過程~~~轉貼~~~~~~ (11千字)2001-10-10
- 由於昨晚朋友過生日,今天睡過頭了!:)
才遲遲貼出《duelist crackme 3 破解》 (4千字)2000-10-19
- 關於DDD學習過程中的一些疑問2012-05-21
- 請問一個關於web的管理系統的問題2007-04-23Web
- 關於生產系統鎖問題的排查2015-12-25
- 貼一篇破解過程,本想作為加入BCG的第三篇.但: (2千字)2001-08-09
- 關於centos 7安裝binwalk的過程中產生的問題2024-07-17CentOS
- 我終於破解了魔裝網神了,破解過程!!,不過是用2.70破解的。 (1千字)2001-10-15
- 談談關於如何破解OicqPassOver.exe Ver1.14的問題
(4千字)2000-07-31
- 關於高效能聊天系統的一個問題2004-07-12
- webeasymail的簡單破解過程 (2千字)2001-08-04WebAI
- 有關於儲存過程的一個笑話2013-11-29儲存過程
- 檔案系統修復的一個過程2018-08-04
- 人事資訊綜合管理系統 Ver3.2 (完全版本)的破解過程 (7千字)2002-01-20
- 具體的破解過程來也! (10千字)2001-04-21
- 對VCDCUT 4.03的分析破解過程 (18千字)2001-08-08
- 關於學生選課管理系統的用例圖2024-04-02
- I am Back :) 貼個安裝程式的破解 (6千字)2003-04-06
- 關於定價過程的公式的學習2009-07-06公式
- 騰博條形碼生產-管理系統破解過程,看完後大家不準扔鞋^_^ (2千字)2001-06-26
- EMEDITOR V3.0破解過程~~~~~呵呵~~~~~我第一次寫過程~~~~累死我了~~~~呵呵
(14千字)2001-01-11
- 基於陣列的學生管理系統【C語言版】2018-08-29陣列C語言
- 關於學習過程中走過的彎路2014-10-19
- banq,你好問一個關於《java使用系統開發指南》的問題2005-11-18Java
- asmstudio5.0完全完美破解版的誕生過程(和初學者共同學習!) (1千字)2001-05-02ASM
- 關於雙系統選單,NT系統啟動過程2006-05-16
- 關於 AppCrawler 執行過程中的幾個小問題2020-07-22APP
- 轉貼:破解時間限制的老文章(一) (2千字)2000-10-23
- 破解Ghost多媒體視訊點播系統全過程 (9千字)2002-07-29
- 【C語言課程設計】學生學籍管理系統2014-01-18C語言
- 關於幾個簡單遊戲的CD保護破解。 (3千字)2001-01-05遊戲
- 一個儲存過程的問題!2008-05-25儲存過程