VB程序破解常用函数

VB程序破解常用函数 分析VB程序最大的困难是它的API是VB特有的,且字符串查找并不是很容易

这里记录一些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
8)通过文件大小实现自校验: rtcFileLen 9 万能断点法: 二进制搜索816C24,然后在所有jmp

处下断,Ctrl+L来到下一处816C24,接着在jmp下断,直到搜不到816C24为止,因为VB程序是事件驱动

的程序,每个jmp都会跳到相应事件,我们可以通过修改相应jmp的地址来改变各个事件出现的顺序,

此方法可用于去掉启动框、neg窗等。 Btw: __vbavartsteq系列的还有__vbavartstne 不等于

__vbavartstGe,__vbavartstGt,__vbavartstLe,__vbavartstLt等,比较大于或小于 我们可以通

过以下几个工具来协助查找VB程序字符串 1、GetVBRes 2、VBExplorer 查看->查看字符串 3

、c32asm 查看->字符串,如果发现全是乱码,到编辑中,修改为unicode c32asm和VBExplorer相

比我个人习惯用c32asm,因为它可以直接看到程序哪个地址在调用这个字符串。 在 使用GetVBRes

时,通过查找unicode字符找到我们的目标字符串后,选中该字符串然后用我们惯用的字母或数字替

换,然后再查找我们替换后的字符 串。这种方法的好处,如果你用数字代替的话,可以解决VB中文

显示乱码的问题,有时用OD的unicode插件即可找到修改后的字符串。注意 GetVBRes是需要注册的

,非注册版是无法修改原文件的。 ……………………………………………………………… VB

破解快速找事件 ctrl+B搜索816C24 然后分别在他上面的JMP设置F2断点,运行注册模块进行注册

。 在那个JMP中断就是从这个JMP开始调用注册模块。 在函数中的缩写: 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 Eq ->相等 equal Ne ->不等于 Le ->小于或等于 Lt ->小于 Ge ->大于或等于

Gt ->大于 对话框: bpx rtcMsgBox ->显示一信息对话框 ****** 窗体常用: bpx

DestroyWindow ->破坏即清除指定的窗口以及它的所有子窗口****** bpx mouseevent ->模

拟一次鼠标事件(鼠标中断) bpx postquitmessage ->将一条消息投递给应用程序。这条消息由应

用程序的内部GetMessage循环获得,但不会传给一个特定的窗口 bpx vbaVarTstEq ->检验指定变

量是否相等 判断是否注册的函数****** 下BPX vbaVarTstEq 下断点后,shift+F9运行N次到出现

错误提示窗口,然后N-1次shift+F9运行。alt+F9返回,就可以到关键地方。 拦截警告声: bpx

rtcBeep ->扬声器提示 数据移动: bpx vbaVarCopy ->数据移动将一个变量值串拷贝到内存 bpx

vbaVarMove ->数据移动变量在内存中移动,或将一个变量值串拷贝到内存 bpx vbaStrMove ->移

动字符串 bpx vbaStrCopy ->移动字符串 将一个字符串拷贝到内存,类似于 Windows API

HMEMCPY 数据类型转换: bpx vbaI2Str ->将一个字符串转为8 位1个字节的数值形式(范围

在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间)。 bpx vbaI4Str

->将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647) bpx

vbar4Str ->将一个字符串转为单精度单精度浮点型(4个字节)的数值形式 bpx vbar8Str ->将一

个字符串转为双精度单精度浮点型(8个字节)的数值形式 bpx VarCyFromStr ->(仅VB6库. 要调试

,则在WINICE.DAT里必须有 OLEAUT32.DLL)字符串到变比型数据类型 bpx VarBstrFromI2 ->(仅

VB6库. 要调试,则在WINICE.DAT里必须有 OLEAUT32.DLL)整型数据到字符串: 数值运算: bpx

vbaVarAdd ->两个变量值相加 bpx vbaVarIdiv ->除整,第一个变量除以第二个变量,得到一个整

数商 bpx vbaVarSub ->第一个变量减去第二个变量 bpx vbaVarMul ->两个变量值相乘 bpx

vbaVarDiv ->除 bpx vbaVarMod ->求余 bpx vbaVarNeg ->取负 bpx vbaVarPow ->指数 bpx

vbavarxor ->两个变量值做异或运算 针对变量: bpx vbaVarCompEq ->比较局部变量是否相等

bpx vbaVarCompNe ->比较局部变量是否不等于 bpx vbaVarCompLe ->比较局部变量小于或等于

bpx vbaVarCompLt ->比较局部变量小于 bpx vbaVarCompGe ->比较局部变量大于或等于 bpx

vbaVarCompGt ->比较局部变量大于 VB的指针: THROW 程序结构: bpx vbaVarForInit ->重

复执行初始化 bpx vbaVarForNext ->重复执行循环结构 For… Next… (Loop) 比较函数:

bpx vbaStrCmp ->比较字符串是否相等 ****** bpx vbaStrComp ->比较字符串是否相等 ******

bpx vbaVarTstEq ->检验指定变量是否相等 bpx vbaVarTstNe ->检验指定变量是否不相等 bpx

vbaVarTstGt ->检验指定变量大于 bpx vbaVarTstGe ->检验指定变量大于或等于 bpx

vbaVarTstLt ->检验指定变量小于 bpx vbaVarTstLe ->检验指定变量小于或等于

posted @ 2019-10-07 09:47  老耗子  阅读(606)  评论(0编辑  收藏  举报