談談三個關于VB.NET函數
VB.NET還是比較常用的,于是我研究了一下VB.NET函數,在這里拿出來和大家分享一下,希望對大家有用。Visual Basic(以下簡稱VB)可以說是可視化語言的先驅了,而且它也是可視化程度最高的一個,從幾年前VB誕生之日起到現在,它已經經歷了五個版本,而且現在微軟正在緊張的進行著VB6.0的研制、測試,這么高的更新率,不外乎說明兩個問題:用戶對VB的熱衷,微軟對VB的重視。
#T#不可否認微軟對市場的預測能力是極為高明的,而它強大的技術、財力支持也使它在許多以前未進入的領域,在不長的時間內有成為最有力的競爭對手,如IE之于瀏覽器領域,《帝國時代》之于游戲都是最好的例證。對于VB現在也有一個很強的競爭對手――Delphi,有人把它稱作VB殺手,這顯然有偏激之處,VB的確有它的不足之處,但 Delphi又何嘗不是呢,而且以微軟對VB的傾心,VB的功能必然會越來越強大。
幾個常用VB.NET函數簡解:
1、VB.NET函數 __vbavartstne
如是在VB5中CALL MSVBVM50!___vbavartstne進去后在0F04E351你將看到:
- push dword ptr [ebp+0c] ;Push address *真* serial 的地址
- push dword ptr [ebp+10] ;Push address 你輸入的serial地址
下命令:d ebp+0c你將在數據窗口看到 4字節地址倒序排列,你再次D 地址(己糾正順序的), 就可看到序列號了。
2、VB.NET函數 __vbaR8Str
在 VB5中是如下情況:
- Push ebp-20
- Call MSVBUM50.__vbaR8Str ;轉換 string 到 Integer/Real
- fcomp qword ptr [00401028] ;數據比較
在這行fcomp qword ptr [00401028] Type: DL 00401028 將看到*real* serial #.DL 是顯示 Long/real 型,SOFTICE默認時是DB狀態。
3、 VB.NET函數__vbastrcmp
例:
- :005BDC32 CALL [MSVBVM50!__VbaFreeVar]
- :005BDC38 MOV ESI,[EBP+08]
- :005BDC3B PUSH ESI
- :005BDC3E CALL [ECX+00000790] <-- 值返回到 EDX.
- :005BDC44 MOV EDX,[ESI+4C] <-- 輸入的號碼,但倒轉
- :005BDC47 MOV EAX,[005E0078] <-- 正確號碼
- :005BDC4C PUSH EDX
- :005BDC4D PUSH EAX <-- Push參數給 __vbaStrCmp.
- :005BDC4E CALL [MSVBVM50!__vbaStrCmp] <-- Visual Basic 字符串比較
- :005BDC54 TEST EAX,EAX <-- 測試比較結果
- :005BDC56 JNZ 005BDC64 <-- 不相等跳走