SmartCheck介紹
SmartCheck 是 NuMega 公司推出的一款出色的調(diào)試解釋執(zhí)行程序的工具,目前最新版是 v6.03 。它非常容易使用,你不需了解匯編程序。我們以前經(jīng)常用 SOFTICE 和 W32Dasm 調(diào)試程序,幸好 SmartCheck 出現(xiàn)大大地方便了我們。下面我就介紹SmartCheck的基本用法。
配置 SmartCheck
首先運(yùn)行SmartCheck,裝載一VB程序。在菜單選擇:Program→Settings;出現(xiàn)圖一:(如你在SmartCheck下沒有打開應(yīng)用程序,只出現(xiàn)三個(gè)菜單選項(xiàng):Error Detection;Rrporting;Program Info.)
Error Detection(圖一):選上所有的選項(xiàng)。 "Report error immediately",可根據(jù)情況調(diào)整,選上后程序執(zhí)行有錯(cuò)誤時(shí)會立即出現(xiàn)報(bào)告,此時(shí)在彈出的報(bào)告欄上按acknowledge即可你嫌麻煩可不選此項(xiàng).如此項(xiàng)沒選則不立即報(bào)告.建議不要選。
圖一
點(diǎn)擊在上圖中Advanced后出現(xiàn)圖二:
圖二
Advanced(圖二):選上前面的四項(xiàng).確信"Suppress system API and OLE calls"沒被選上.
Reporting(圖三):除了"Report MouseMove events from OCX controls"外其余全選上.
圖三
--------------------------------------------------------------------------------
用SmartCheck如何運(yùn)行所要crack程序
1) 首先運(yùn)行;
2) 在"File" "Open"選擇你需運(yùn)行的程序;
3) 按F5或選擇 "Program" "Start"運(yùn)行程序;
4) 停止程序,選擇"Program" "End";
你最好是了解SmartCheck的工具欄的用法,大大方便操作。
--------------------------------------------------------------------------------
程序在SmartCheck下運(yùn)行結(jié)束后你應(yīng)看到時(shí)如下東西
1) 在SmartCheck里你應(yīng)有3個(gè)小窗口。我自己的有時(shí)會出現(xiàn)一個(gè)主窗口,怎么回事呢?原來其它兩個(gè)(右邊和下邊)完全最小,縮到邊上(右邊、下邊)去了,你可用鼠標(biāo)把它們拖出來。
2) 主窗口被稱為"Program Results window"。 這窗口在左上。
3) 右邊的窗口主要是顯示主窗口的一些詳細(xì)內(nèi)容,很多重要詳細(xì)東西都在此,你有可能看到的序列號就在這里。
在你停止程序后,你應(yīng)該分析SmartCheck給出的信息,你必需選上相關(guān)的行,并選擇"View" "Show All Events"。你需要VB介紹這課相關(guān)知識了解各比較方法和斷點(diǎn)函數(shù)。
--------------------------------------------------------------------------------
SmartCheck 常見信息
我用粗體表示在SmartCheck中顯示的內(nèi)容。
--------------------------------------------------------------------------------
****.Text 如. Text1.Text
如果你點(diǎn)擊前面的“+”符號,你將看到其它的幾行,尋找SysAllocStringLen。
如. SysAllocStringLen(PTR:00000000 DWORD:00000029) returns LPVOID:410584
解釋:
從文本框取出你鍵入字符并放置在內(nèi)存00410584處。這意味著你可不用SOFTICE下的"s 30 l" 查找字符串命令。我們來驗(yàn)證一下:確信你的SOFTICE己運(yùn)行,然后在SmartCheck下再次運(yùn)行程序。當(dāng)你在SmartCheck下的程序正在運(yùn)行時(shí),在適當(dāng)機(jī)會用SOFTICE中斷(CTRL+D),下命令"d 00410584"。如果你做的正確的話,你將在內(nèi)存里看到你鍵入的字符。 如果你的程序沒在SmartCheck下運(yùn)行,你可能在此地址看不到,因?yàn)閮?nèi)存可能改變了?;騼?nèi)存“釋放”。
--------------------------------------------------------------------------------
__vbasrtcmp(String:"zzzzz"String:"yyyyy")returns DWORD:0
解釋:
__vbastrcmp -- 用來比較字符串 如. "zzzzz" and "yyyyy"
注意:你可能會看到正確序列號和你輸入字符串比較。
returns DWORD:0 -- 在SOFTICE里,你將看到比較后, eax = 0
--------------------------------------------------------------------------------
__vbafreestr(LPBSTR:0063F3F0)
點(diǎn)擊上面 "+" 尋找SysFreeString
如. SysFreeString(BSTR:00410584)
解釋:
字符串在內(nèi)存00410584 被清除。
--------------------------------------------------------------------------------
__vbaVarCopy(VARIANT:String:"12345" VARIANT:Empty) returns DWORD:63FA30
點(diǎn)擊前面的 "+" 號尋找SysAllocStringByteLen
如. SysAllocStringByteLen(LPSTR:004023F0 DWORD:0000000C) returns LPVOID:4103CC
解釋:
"12345"被復(fù)制到內(nèi)存 004103CC
這類似 __vbaVarMove
--------------------------------------------------------------------------------
__vbaVarForInit(VARIANT:Empty PTR:0063F920 PTR:0063F91.....)
解釋:
移動(dòng)到上面,為了下一個(gè)循環(huán)
通常在它下面 __vbaVarForNext 用法與其一樣.
--------------------------------------------------------------------------------
Mid(VARIANT:String:"abcdefg" long:1 VARIANT:Integet:1)
解釋:
從位置1得到字符串"abcdefg"第一個(gè)字符。
點(diǎn)擊上面的 "+"號尋找 SysAllocStringByteLen
如. SysAllocStringByteLen(LPSTR:004103F0 DWORD:00000002) returns LPVOID:410434
解釋:
"a"將被復(fù)制到內(nèi)存00410434
它后面通常跟隨 __vbaStrVarVal(VARIATN:String"a") returns DWORD:410434
--------------------------------------------------------------------------------
Asc(String:"T") returns Integer:84
解釋:
得到“T”的ASCII碼十進(jìn)制 84
--------------------------------------------------------------------------------
SysFreeString(BSTR:004103F0)
解釋:
釋放內(nèi)存位置:004103F0
這些對我們特別有用,因?yàn)楫?dāng)你點(diǎn)擊它們,看右邊窗口,你將看到被釋放的字符串。此時(shí)正確的序列號和密碼有可能在此。
--------------------------------------------------------------------------------
__vbaVarCat(VARIANT:String:"aa" VARIANT:String:"bb") returns DWORD:63F974
解釋:
連接 "bb" 和"aa"形成"aabb"
--------------------------------------------------------------------------------
__vbaFreeVar(VARIANT:String:"abcdefg")
點(diǎn)擊 "+"尋找SysFreeString
例. SysFreeString(BSTR:0041035C)
解釋:
從內(nèi)存 0041035C釋放 "abcdefg"
這兒,點(diǎn)擊這行在右邊有可能發(fā)現(xiàn)你所要的東西。
--------------------------------------------------------------------------------
__vbaVarTstEq(VARIANT:**** VARIANT:****) returns DWORD:0
解釋:
__vbaVarTstEq 通常用來比較變量.如果它們不一樣 DWORD=0 (so eax=0)
如果它們一樣 DWORD將為FFFFFFFF (so eax=FFFFFFFF)
類似__vbaVarCmpEq
--------------------------------------------------------------------------------
Len(String:"Cracker") returns LONG:7
解釋:
得到字符串 "Cracker" 的長度為7
--------------------------------------------------------------------------------
****.Text <-- "Wrong! Try Again!!" (String)
解釋:
在文本框中顯示g "Wrong! Try Again!!"
--------------------------------------------------------------------------------
__vbaVarAdd(VARIANT:Integer:2 VARIANT:Integer:97) returns .....
解釋:
2+97=97返回99
But if both are Strings instead of Integers you will get 297 instead.
--------------------------------------------------------------------------------
__vbaVarDiv(VARIANT:Integer:97 VARIANT:Long:1) returns.....
解釋:
97除以1
--------------------------------------------------------------------------------
__vbaVarMul(VARIANT:String:"1" VARIANT:String:"2") returns ...
Explanation:
1乘2
--------------------------------------------------------------------------------
__vbaVarSub(VARIANT:String:"2" VARIANT:String:"34") returns ...
解釋:
"34"-"2" 返回 32
--------------------------------------------------------------------------------
MsgBox(VARIANT:String:"Nope! That's not right" Integer:0 VARIANT:String:"Wrong"VARIANT.....)
解釋:
創(chuàng)建一個(gè)消息框,標(biāo)題是 "Wrong" 內(nèi)容為 "Nope! That's not right"
看雪整理于2000/2/27
(編輯:天命孤獨(dú))
新聞熱點(diǎn)
疑難解答
圖片精選