VB程序的破解
朋友們一般都比較害怕VB的程序,原因之一就是VB使用的函數(shù)不合我們的“慣用”規(guī)則
下面我就來給大家介紹一下VB程序的常見函數(shù)
1) 數(shù)據(jù)類型轉(zhuǎn)換:
a) __vbaI2Str??? 將一個字符串轉(zhuǎn)為8 位(1個字節(jié))的數(shù)值形式(范圍在 0 至 255 之間) 或2 個字節(jié)的數(shù)值形式(范圍在 -32,768 到 32,767 之間)。
b)__vbaI4Str?? 將一個字符串轉(zhuǎn)為長整型(4個字節(jié))的數(shù)值形式(范圍從-2,147,483,6482,147,483,647)
c)__vbar4Str? 將一個字符串轉(zhuǎn)為單精度單精度浮點型(4個字節(jié))的數(shù)值形式
d)__vbar8Str?? 將一個字符串轉(zhuǎn)為雙精度單精度浮點型(8個字節(jié))的數(shù)值形式
e) VarCyFromStr??? (僅VB6庫. 要調(diào)試,則在WINICE.DAT里必須有 OLEAUT32.DLL)字符串到變比型數(shù)據(jù)類型
f) VarBstrFromI2? (僅VB6庫. 要調(diào)試,則在WINICE.DAT里必須有 OLEAUT32.DLL)整型數(shù)據(jù)到字符串:
2) 數(shù)據(jù)移動:
a) __vbaStrCopy????? 將一個字符串拷貝到內(nèi)存,類似于 Windows API HMEMCPY
b) __vbaVarCopy???? 將一個變量值串拷貝到內(nèi)存
c) __vbaVarMove??? 變量在內(nèi)存中移動,或?qū)⒁粋€變量值串拷貝到內(nèi)存
3) 數(shù)學(xué)運(yùn)算:
a)? __vbavaradd????? 兩個變量值相加
b) __vbavarsub????? 第一個變量減去第二個變量
c) __vbavarmul???? 兩個變量值相乘
d) __vbavaridiv???? 第一個變量除以第二個變量,得到一個整數(shù)商
e) __vbavarxor?????? 兩個變量值做異或運(yùn)算
4) 程序設(shè)計雜項:
a) __vbavarfornext? 這是VB程序里的循環(huán)結(jié)構(gòu), For... Next...? (Loop)
b) __vbafreestr??? 釋放出字符串所占的內(nèi)存,也就是把內(nèi)存某個位置的字符串給抹掉
c) __vbafreeobj?? 釋放出VB一個對象(一個窗口,一個對話框)所占的內(nèi)存,也就是把內(nèi)存某個位置的一個窗口,一個對話框抹掉
d) __vbastrvarval? 從字符串特點位置上獲取其值
e) multibytetowidechar? 將數(shù)據(jù)轉(zhuǎn)換為寬字符格式,VB在處理數(shù)據(jù)之都要這樣做,在TRW2000顯示為7.8.7.8.7.8.7.8
f) rtcMsgBox?? 調(diào)用一個消息框,類似于WINDOWS里的messagebox/a/exa,此之前一定有個PUSH命令將要在消息框中顯示的數(shù)據(jù)壓入椎棧
g) __vbavarcat??? 將兩個變量值相連,如果是兩個字符串,就連在一起
h) __vbafreevar? 釋放出變量所占的內(nèi)存,也就是把內(nèi)存某個位置的變量給抹掉
i) __vbaobjset
j)? __vbaLenBstr?? 獲得一個字符串的長度,注:VB中一個漢字的長度也為1
k) rtcInputBox??? 顯示一個VB標(biāo)準(zhǔn)的輸入窗口,類似window's API getwindowtext/a, GetDlgItemtext/a
l) __vbaNew????? 調(diào)用顯示一個對話框,類似 Windows' API Dialogbox
m) __vbaNew2??? 調(diào)用顯示一個對話框,類似 Windows' API Dialogboxparam/a
n) rtcTrimBstr?? 將字串左右兩邊的空格去掉
5) 比較函數(shù)
a)? __vbastrcomp?? 比較兩個字符串,類似于 Window's API lstrcmp
b)? __vbastrcmp?? 比較兩個字符串,類似于 Window's API lstrcmp
c) __vbavartsteq? 比較兩個變量值是否相等
d)__vbaFpCmpCy????????????????? - Compares Floating point to currency. sp;??????????? Compares Floating point to currency
6) 在動態(tài)跟蹤,分析算法時,尤其要注意的函數(shù):
rtcMidCharVar? 從字符串中取相應(yīng)字符,VB中的MID函數(shù),用法MID("字符串","開始的位置","取幾個字符")
rtcLeftCharVar 從字符串左邊取相應(yīng)字符,VB中的用法:left("字符串","從左邊開始取幾個字符")
rtcRightCharVar 從字符串右邊取相應(yīng)字符,VB中的用法:Right("字符串","從右邊開始取幾個字符")
__vbaStrCat? 用字符串的操作,就是將兩個字符串合起來,在VB中只有一個&或+
__vbaStrCmp? 字符串比較,在VB中只有一個=或<>
ASC()函數(shù)??? 取一個字符的ASC值,在反匯編時,還是有的movsx 操作數(shù)
7) 在函數(shù)中的縮寫:
bool 布爾型數(shù)據(jù)(TRUE 或? FALSE)
str? 字符串型數(shù)據(jù) STRING
i2?? 字節(jié)型數(shù)據(jù)或雙字節(jié)整型數(shù)據(jù)? BYTE or Integer
ui2? 無符號雙字節(jié)整型數(shù)據(jù)?
i4?? 長整型數(shù)據(jù)(4字節(jié))? Long
r4?? 單精度浮點型數(shù)據(jù)(4字節(jié))? Single
r8?? 雙精度浮點型數(shù)據(jù)(8字節(jié))? Double
cy (8 個字節(jié))整型的數(shù)值形式 Currency
var? 變量???? Variant
fp 浮點數(shù)據(jù)類型? Float Point
cmp? 比較?? compare
comp 比較?? compare
?
Btw:
__vbavartsteq系列的還有__vbavartstne 不等于
__vbavartstGe,__vbavartstGt,__vbavartstLe,__vbavartstLt等,比較大于或小于
而且我們用OD的查找字符串的插件來查找字符串在很多時候?qū)B程序是無能為力的
現(xiàn)在我來介紹3種軟件來給大家解除煩勞!
1、GetVBRes
2、VBExplorer
3、c32asm
常用方法
方法一、用w32dasm(非無極版)
??????? __vbastrcomp
方法二、直接用OD下斷點的方法
方法三、SmartCheck
方法四、使用GetVBres之類的輔助工具
?
總結(jié)
- 上一篇: JDK6和JDK7中String的sub
- 下一篇: dll加载失败,返回126错误