可用到的断点:
i) __vbastrcomp or __vbastrcmp (下划线是两短线 _ 组成) <-- 串比较函数
注意:如果你是 crack VB6 程序,你应在两断点前增加 msvbvm60! 。
如: bpx msvbvm60!__vbastrcomp or bpx msvbvm60!__vbastrcmp
ii) 搜索特殊比较代码(具体参考下一节)
如: 56,57,8b,7c,24,10,8b,74,24,0c,8b,4c,24,14,33,c0,f3,66,a7
2) 变量 ( Variant)比较
在这方法中,两个变量(变量数据类型)互相比较。变量数据类型是一种特殊数据类型,包括数字、字符串或日期数据及一些用户定义的类型。这种类型储存数字长度是 16 字节或字符 22 字节(加上串长度)。
一个范例代码:
Dim correct As Variant, entered As Variant <-- 定义 "correct" and "entered" 作为变量
correct = Correct Password <-- 设置 "correct" 放置 "Correct Password"
entered = Text1.Text <-- 设置 "entered" 作为你输入密码
If correct = entered Then <-- 用变量方法比较
GoTo Correct Message
Else
GoTo Wrong Message
End If
在这方法里, 1 中的两个断点将不起作用,因为程序不再用
__vbastrcomp 等 ...
有用断点 :
i) __vbavartsteq <-- 测试变量是否相等
注意:如果你是 crack VB6 程序,你应在两断点前增加 msvbvm60! 。
例: bpx msvbvm60!__vbavartsteq
3) 长整型( long) 比较
这也是一个普通的方法。两个变量(长整型)互相比较。
long 型数据类型是 4 字节( 32 位)整数,其范围 -2,147,483,648 到 2,147,483,647 。因此该种方法存在只能比较数字的局限性。
一个此类型范例:
Dim correct As Long, entered As Long <-- 定义 "correct" 和 "entered" 作为长整型
correct = 12345 <-- 设置 "correct" 为正确密码
entered = Text1.Text <-- 设置 "entered" 为输入密码
If entered = correct Then <-- 用长整型方法比较
GoTo Correct Message
Else
GoTo Wrong Message
End If
对这种类型没有专门的断点函数,因为其数据比较是在主程序里而不是在 VB dll 中。
-------------------------------------------------------------------
另外还有 其它的 5 种方法,如果下面的方法你听起来有点怪或不太可能,你可忽略它们,但记得 VB 保护方式不限于上述三种。
4) 单精度实数(Single)比较
5) 双精度(Double)比较
6) 整型(Integer)比较
7) 字节(Byte)比较
8) CURRENCY 型比较
上述8个比较方式是不是意味着我们每次能中断在其单个某一类型的比较程序里?回答是否定的。这是因为程序有可能同时采用两种方法来比较,如Currency和String, Variant 和 Long 等...
一些可能用上的断点
1) 数据类型转换
i) 字符串( String )转换字节( Byte )或整型( Integer ) : __vbai2str
ii) 字符串( String )转长型( Long ) : __vbai4str
iii) 字符串( String )转换单精度型( Single ) : __vbar4str
iv) 字符串( String )转换双精度型( Double ) : __vbar8str
v) 字符串( String )转 Currency 型 : VarCyFromStr ( 适合 VB6. 你的 WINICE.DAT 必须有 OLEAUT32.DLL)
vi) 整型( Integer )转字符串型( String ) : VarBstrFromI2 ( 适合 VB6. 你的 WINICE.DAT 必须 OLEAUT32.DLL)
2) 移动数据
i) 字符串( String )到内存 : __vbaStrCopy
ii) 变量( Variant )到内存 : __vbaVarCopy or __vbaVarMove
3) 运算符
i) 加法 : __vbavaradd <-- 增加变量
ii) 减法 : __vbavarsub <-- 减去变量
iii) 乘法 : __vbavarmul <-- 乘以变量
iv) 除法 : __vbavaridiv <--Dividing Variant to get answer in Integer
v) XOR: __vbavarxor <--XOR
4) 其它类
i) __vbavarfornext <--Used in codes where there is a For... Next... Statement (Loop)
ii) __vbafreestr
iii) __vbafreeobj
iv) __vbastrvarval <--Get the value from a specific location in a String
v) multibytetowidechar
vi) rtcMsgBox
vii) __vbavarcat <--Joining 2 Variants together
viii) __vbafreevar
ix) __vbaobjset