VB程序逆向常用的函数
1) 数据类型转换:?
a) __vbaI2Str??? 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。
b)__vbaI4Str?? 将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647)?
c)__vbar4Str? 将一个字符串转为单精度单精度浮点型(4个字节)的数值形式
d)__vbar8Str?? 将一个字符串转为双精度单精度浮点型(8个字节)的数值形式
e) VarCyFromStr??? (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)字符串到变比型数据类型?
f) VarBstrFromI2? (仅VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)整型数据到字符串:
2) 数据移动:?
a) __vbaStrCopy????? 将一个字符串拷贝到内存,类似于 Windows API HMEMCPY?
b) __vbaVarCopy???? 将一个变量值串拷贝到内存?
c) __vbaVarMove??? 变量在内存中移动,或将一个变量值串拷贝到内存
3) 数学运算:
a)? __vbavaradd????? 两个变量值相加?
b) __vbavarsub????? 第一个变量减去第二个变量
c) __vbavarmul???? 两个变量值相乘
d) __vbavaridiv???? 第一个变量除以第二个变量,得到一个整数商?
e) __vbavarxor?????? 两个变量值做异或运算
4) 程序设计杂项:?
a) __vbavarfornext? 这是VB程序里的循环结构, For... Next...? (Loop)?
b) __vbafreestr??? 释放出字符串所占的内存,也就是把内存某个位置的字符串给抹掉
c) __vbafreeobj?? 释放出VB一个对象(一个窗口,一个对话框)所占的内存,也就是把内存某个位置的一个窗口,一个对话框抹掉
d) __vbastrvarval? 从字符串特点位置上获取其值?
e) multibytetowidechar? 将数据转换为宽字符格式,VB在处理数据之都要这样做,在TRW2000显示为7.8.7.8.7.8.7.8
f) rtcMsgBox?? 调用一个消息框,类似于WINDOWS里的messagebox/a/exa,此之前一定有个PUSH命令将要在消息框中显示的数据压入椎栈?
g) __vbavarcat??? 将两个变量值相连,如果是两个字符串,就连在一起?
h) __vbafreevar? 释放出变量所占的内存,也就是把内存某个位置的变量给抹掉
i) __vbaobjset?
j)? __vbaLenBstr?? 获得一个字符串的长度,注:VB中一个汉字的长度也为1
k) rtcInputBox??? 显示一个VB标准的输入窗口,类似window's API getwindowtext/a, GetDlgItemtext/a?
l) __vbaNew????? 调用显示一个对话框,类似 Windows' API Dialogbox?
m) __vbaNew2??? 调用显示一个对话框,类似 Windows' API Dialogboxparam/a?
n) rtcTrimBstr?? 将字串左右两边的空格去掉
5) 比较函数
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) 在动态跟踪,分析算法时,尤其要注意的函数:
rtcMidCharVar? 从字符串中取相应字符,VB中的MID函数,用法MID("字符串","开始的位置","取几个字符")
rtcLeftCharVar 从字符串左边取相应字符,VB中的用法:left("字符串","从左边开始取几个字符")
rtcRightCharVar 从字符串右边取相应字符,VB中的用法:Right("字符串","从右边开始取几个字符")
__vbaStrCat? 用字符串的操作,就是将两个字符串合起来,在VB中只有一个&或+
__vbaStrCmp? 字符串比较,在VB中只有一个=或<>
ASC()函数??? 取一个字符的ASC值,在反汇编时,还是有的movsx 操作数
7) 在函数中的缩写:
bool 布尔型数据(TRUE 或? FALSE)?
str? 字符串型数据 STRING
i2?? 字节型数据或双字节整型数据? BYTE or Integer
ui2? 无符号双字节整型数据??
i4?? 长整型数据(4字节)? Long
r4?? 单精度浮点型数据(4字节)? Single?
r8?? 双精度浮点型数据(8字节)? Double
cy (8 个字节)整型的数值形式 Currency
var? 变量???? Variant
fp 浮点数据类型? Float Point
cmp? 比较?? compare
comp 比较?? compare
?
Btw:
__vbavartsteq系列的还有__vbavartstne 不等于
__vbavartstGe,__vbavartstGt,__vbavartstLe,__vbavartstLt等,比较大于或小于