Tutor13 How to crack Drag And View v4.50
作者:dREAMtHEATER
E-mail:dreamtheater@263.net
寫作日期: 16/17th, Oct 1999
軟體背景資料
執行平臺: Win9X/NT
檔名稱: dv95.exe
程式型別: 檔案格式瀏覽器
下載地點: http://www.canyonsw.com
檔案大小: 1,970KB
使用的工具
SoftIce V4.0--Win9X Debugger
W32Dasm V8.93--Win9X Dissembler
RegSnap V2.51--Registry Analyzing Tool
Registry Studio V1.01--Enhanced Registry Editor
保護型別
Serials(*) Nag Screens(*) Keyfiles( ) Crippled( ) Packed( ) CD-Checks( )
難易程度
Easy(X) Medium( ) Hard( ) Pro( )
----------=======宣告========----------
未經作者同意,不得修改、引用原文,一切權利保留。
本教程只供教學用,其他一切用途皆被禁止。
----------=======軟體介紹========----------
超強的瀏覽,編輯程式,支援拖放功能,支援各種文字、圖形,甚至資料庫的瀏覽。可取代
ACDsee,UltraEdit等。
它所支援的檔案型別如下:
- Word, Works, WordPerfect, Ami Pro,
Q&AWrite, 純文字、二進位制檔案等型別文件。
- Excel, Lotus, Quattro等電子表格
- FoxPro, Clipper, dBase資料庫
- 播放動態GIF檔案
- 播放MIDI, WAV和RMI聲音檔案
- 播放AVI動畫
- 大量最新的Internet檔案格式
- 使用Active X控制顯示Web頁面
- 大量的圖形檔案
註冊後能夠支援下列格式:
PowerPoint PPT
Autocad DXF
Micrografx Designer DRW
Computer Graphics Metafiles CGM
Encapsulated Postscript Files EPS
HPGL
Lotus PIC
WordPerfect Graphics WPG
----摘自該軟體的漢化說明(作者:張楚權)
----------=======軟體的保護系統========-------
該軟體可以免費試用三十天,六十天後必須註冊,時間寫在
HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{34ee9750-9350-11d1-8fee-004095e2400c}預設鍵
值中,註冊後在登錄檔: HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{34ee9750-9350-11d1-
8fee-004095e2400c}\InprocServer32 這個子鍵下寫入預設鍵值:“ole32.DLL”,如果是重新獲得
30天試用期,將在:
HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{34ee9750-9350-11d1-8fee-004095e2400c}下寫入
一個DWORD值 “Extension=0x00000001(1)”。可見,該程式並不是將真正的註冊碼寫入登錄檔,而
是以“ole32.DLL”和“Extension=0x00000001(1)”為標誌。
----------========正文========----------
如何計算註冊碼
執行程式,還好!沒有討厭的nag出現,直接到選單中尋找註冊項,沒有!難道是過期後才提
示註冊?對!將系統時間往後調,關閉視窗,準備重新執行。就在我按下視窗的關閉按紐後,哇!
Nag出現了,原來它躲在這裡!點選上面的"Enter Code" button,進入註冊視窗,輸入1234567890。
在SoftIce中設斷點"bpx hmemcpy" ,Ctrl-D,回到註冊視窗,press "OK" button,BOOM!你又立
即回到SoftIce中,"bc *",取消所有斷點,Press F12數次,直到下面的程式碼出現:
:00402B15 6A0F push 0000000F
:00402B17 50 push eax
* Possible Reference to Dialog: DialogID_0083, CONTROL_ID:01F9, ""
|
:00402B18 68F9010000 push 000001F9
:00402B1D 56 push esi
* Reference To: USER32.GetDlgItemTextA, Ord:00F5h <==程式呼叫"GetDlgItemTextA"來獲取
你輸入的code,在SI中你也可以設定
這個斷點,但請記住,在你不知道程
序呼叫什麼函式之前,"hmemcpy"應
是你的首選,它的命中率為99.9% ,
這會節省你的時間,但需要你有較
多的經驗。
|
:00402B1E FF1570BD4400 Call dword ptr [0044BD70]
:00402B24 FF35EC5A4400 push dword ptr [00445AEC]
:00402B2A 8D45EC lea eax, dword ptr [ebp-14] <==eax指向輸入的code
:00402B2D 50 push eax
:00402B2E 56 push esi
:00402B2F E83C000000 call 00402B70 <==code check
:00402B34 83C40C add esp, 0000000C
:00402B37 85C0 test eax, eax
:00402B39 7417 je 00402B52 <==good/bad boy
:00402B3B 6A40 push 00000040
* Possible StringData Ref from Data Obj ->"Thank You"
|
:00402B3D 6808134400 push 00441308
* Possible StringData Ref from Data Obj ->"Program is registered"
|
:00402B42 68F0124400 push 004412F0
:00402B47 56 push esi
* Reference To: USER32.MessageBoxA, Ord:0195h
|
:00402B48 FF1574BD4400 Call dword ptr [0044BD74]
為了瞭解程式如何進行註冊碼計算的,我們需要trace into "call 00402B70",因此在
:00402B70處設斷點,重新回到註冊視窗,填入fake code,這回你進入了下面的這段程式碼:
* Referenced by a CALL at Address:
|:00402B2F
|
:00402B70 55 push ebp
:00402B71 8BEC mov ebp, esp
:00402B73 56 push esi
:00402B74 57 push edi
:00402B75 8B7D0C mov edi, dword ptr [ebp+0C]
:00402B78 57 push edi <==eax point to code you type into
* Reference To: KERNEL32.lstrlenA, Ord:02A1h
|
:00402B79 FF1508BA4400 Call dword ptr [0044BA08] <==獲取你輸入code的字串
長度
:00402B7F 83F80E cmp eax, 0000000E
:00402B82 7550 jne 00402BD4 <==not equal to 14 ,bad boy
:00402B84 57 push edi
:00402B85 33F6 xor esi, esi
* Reference To: USER32.CharUpperA, Ord:002Bh
|
:00402B87 FF1564BD4400 Call dword ptr [0044BD64] <==將輸入的code中的小寫字
母變成大寫。
:00402B8D 33C9 xor ecx, ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402BAF(C)
|
:00402B8F 8A0439 mov al, byte ptr [ecx+edi]---------+
:00402B92 3C41 cmp al, 41 |
:00402B94 0FBEC0 movsx eax, al |
:00402B97 7C06 jl 00402B9F |
:00402B99 8D7406BF lea esi, dword ptr [esi+eax-41] |
:00402B9D EB04 jmp 00402BA3 |
|
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |
|:00402B97(C) |
| |
:00402B9F 8D7406D0 lea esi, dword ptr [esi+eax-30] |
|---real serial
* Referenced by a (U)nconditional or (C)onditional Jump at Address: | check
|:00402B9D(U) |
| |
:00402BA3 83FE09 cmp esi, 00000009 |
:00402BA6 7E03 jle 00402BAB |
:00402BA8 83EE09 sub esi, 00000009 |
|
* Referenced by a (U)nconditional or (C)onditional Jump at Address: |
|:00402BA6(C) |
| |
:00402BAB 41 inc ecx |
:00402BAC 83F90E cmp ecx, 0000000E |
:00402BAF 7CDE jl 00402B8F -----------------------+
:00402BB1 83FE04 cmp esi, 00000004
:00402BB4 750F jne 00402BC5 〈== if eax=4, you'll recover more 30
days to evaluate it
:00402BB6 FF7510 push [ebp+10]
:00402BB9 FF7508 push [ebp+08]
:00402BBC E8A3000000 call 00402C64 <==寫登錄檔
:00402BC1 59 pop ecx
:00402BC2 59 pop ecx
:00402BC3 EB3D jmp 00402C02
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402BB4(C)
|
:00402BC5 8B4510 mov eax, dword ptr [ebp+10] <==eax=5
:00402BC8 3BF0 cmp esi, eax
:00402BCA 7508 jne 00402BD4 <==good/bad boy
:00402BCC 48 dec eax
:00402BCD 7425 je 00402BF4
:00402BCF 83E804 sub eax, 00000004
:00402BD2 7419 je 00402BED
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402B82(C), :00402BCA(C)
|
:00402BD4 6A10 push 00000010
* Possible StringData Ref from Data Obj ->"Invalid Code"
|
:00402BD6 6888134400 push 00441388
* Possible StringData Ref from Data Obj ->"Sorry, Invalid Code!"
|
:00402BDB 6870134400 push 00441370
:00402BE0 FF7508 push [ebp+08]
* Reference To: USER32.MessageBoxA, Ord:0195h
|
:00402BE3 FF1574BD4400 Call dword ptr [0044BD74]
:00402BE9 33C0 xor eax, eax
:00402BEB EB15 jmp 00402C02
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402BD2(C)
|
* Possible StringData Ref from Data Obj ->"{34ee9750-9350-11d1-8fee-004095e2400c}"
|
:00402BED 6890114400 push 00441190
:00402BF2 EB05 jmp 00402BF9
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402BCD(C)
|
* Possible StringData Ref from Data Obj ->"{6ea280e0-9350-11d1-8fee-004095e2400c}"
|
:00402BF4 68E0114400 push 004411E0
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402BF2(U)
|
:00402BF9 E808000000 call 00402C06 <==寫登錄檔
:00402BFE 59 pop ecx
:00402BFF 6A01 push 00000001
:00402C01 58 pop eax
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00402BC3(U), :00402BEB(U)
|
:00402C02 5F pop edi
:00402C03 5E pop esi
:00402C04 5D pop ebp
:00402C05 C3 ret
從:00402B8F到:00402BAC計算註冊碼,你能看懂嗎?其中,edi指向code字串的首地址,
我們可以將我們輸入的code看作一個字串陣列(假設為reg(I)),按順序取字串的每一位,共進
行十四次迴圈,每次將該位字元的ACSII碼值與0x41(字元“A”)相比,若小於則將碼值減去0x30(
字元“0”),所得值加上esi(初始值為零)再賦給esi;若大於等於,則減去0x41,其他步驟同前。每
次迴圈的最後將esi與9比較,大於9則令esi=esi-9。
迴圈計算結束,所得esi值若等於4,你將重新獲得30天試用期,等於5,你就是註冊使用者了
,等於其他數,程式就認為你輸入了無效的註冊碼。
為了便於理解,我將上面計算註冊碼的部分翻譯成BASIC語言(注:48,65代表"0","A"十進
制ASCII值):
esi=0
for i=1 to 14
a=asc(reg(i))-65
if a<0 then
esi=esi+asc(reg(i))-48
else
esi=esi+asc(reg(i))-65
end if
if esi>9 then
esi=esi-9
end if
next i
if esi=5 then goto goodbay
else
if esi=4 then goto more30days
end if
end if
goto badboy
經過上面的講述你能獨立算出正確的註冊碼嗎?可以看出,有無數個14位字元組成的字串
符合上述條件。最簡單、直接的推算,可以寫出50000000000000,5jjjjjjjjjjjjj,11111111111111
.......你能類推嗎?
If you have any questions,please free drop me at dreamtheater@263.net
dREAMtHEATER
相關文章
- Tutor 10 How to crack AutoZip 98 v4.02015-11-15
- Tutor 11 How to crack WebZIP V2.72.1352015-11-15Web
- Tutor8?How to crack LockDown 2000 3.0 Build 3.0.1.282015-11-15UI
- Tutor 9 How to crack Second Copy 97 version 5.31 build 962015-11-15UI
- How to Monitor the Progress of a Materialized View Refresh (MVIEW)2013-12-03ZedView
- How to Run and View a Listener Trace. [ID 147446.1]2012-09-27View
- View and Data API Tips: how to make viewer full screen2015-02-04ViewAPI
- How To Know If An Object (Table / Procedure / View /…) Is Currently Being2013-10-22ObjectView
- How to view and transfer FSMO roles in Windows Server 20032008-09-25ViewWindowsServer
- JavaScript drag 事件2019-10-06JavaScript事件
- drag &drop 拖拽事件2019-10-07事件
- drag & drop 拖拽事件2019-10-07事件
- Drag & Drop 拖拽詳解2019-10-05
- HTML5 : Drag & Drop2019-02-25HTML
- 如何自定義 drag 樣式2022-05-23
- drag拖拽程式碼例項2017-04-16
- WIFI WPA1/2 Crack for Windows2020-08-19WiFiWindows
- HTML5 Drag和Drop 拖拽2019-03-05HTML
- dnd.js 拖放庫 Drag and Drop2021-09-09JS
- HTML5 拖放(Drag和drop)2015-04-09HTML
- drag & resize元素的jQuery實現2014-07-15jQuery
- html 5 drag and drop upload file2014-07-17HTML
- HTML5 drag & drop 拖拽與拖放2018-12-21HTML
- html-拖拽釋放(Drag and drop) API2022-02-23HTMLAPI
- HTML5中 drag 和 drop api2024-05-17HTMLAPI
- 輕鬆試卷 V4.50 演算法分析 (5千字)2002-01-03演算法
- JSON Crack 資料視覺化工具2022-10-26JSON視覺化
- DSP Builder 12.0安裝及crack方法2012-08-25UI
- Blazor 使用拖放(drag and drop)上傳檔案2022-04-11Blazor
- Canvas drag 實現拖拽拼圖小遊戲2016-10-28Canvas遊戲
- 033Drag and Drop-TheBrain提示2016-02-153DAI
- java swing的drag and drop源程式 (轉)2008-03-01Java
- 【辛佳雨】Flex builder 3 beta3 crack2008-06-05FlexUI
- [原創]IPhone 平臺下破解:Crack Firewall ip2010-03-30iPhone
- CRACK bootstart6.02版 (26千字)2001-10-22boot
- 精讀《結合 React 使用原生 Drag Drop API》2020-02-24ReactAPI
- HTML5原生拖拽/拖放 Drag & Drop 詳解2019-03-03HTML
- 一起來寫段JS drag程式碼2015-05-04JS