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
Btw:
__vbavartsteq系列的还有__vbavartstne 不等于
__vbavartstGe,__vbavartstGt,__vbavartstLe,__vbavartstLt等,比较大于或小于
-----------------------------
拦截警告声:
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 —>检验指定变量小于或等于
字符串操作:
bpx vbaStrCat —>用字符串的操作,就是将两个字符串合起来,在VB中只有一个&或+
bpx vbaStrLike
bpx vbaStrTextComp —>与指定文本字符串比较
bpx vbaStrTextLike
bpx vbaLenBstr —>字符串长度
bpx vbaLenBstrB —>字符串长度
bpx vbaLenVar —>字符串长度
bpx vbaLenVarB —>字符串长度
bpx rtcLeftCharVar —>截取字符串,从字符串左边取相应字符,VB中的用法:left("字符串","从左边开始取几个字符")
bpx vbaI4Var —>截取字符串
bpx rtcRightCharVar —>截取字符串,从字符串右边取相应字符,VB中的用法:Right("字符串","从右边开始取几个字符")
bpx rtcMidCharVar —>截取字符串,VB中的MID函数,用法MID("字符串","开始的位置","取几个字符")
bpx vbaInStr —>查找字符串位置
bpx vbaInStrB —>查找字节位置
bpx vbaStrCopy —>复制字符串
bpx vbaStrMove —>移动字符串
bpx rtcLeftTrimVar —>删除字串的空白
bpx rtcRightTrimVar —>删除字串的空白
bpx rtcTrimVar —>删除字串的空白
bpx vbaRsetFixstrFree —>字符串往右对齐
bpx vbaRsetFixstr —>字符串往右对齐
bpx vbaLsetFixstrFree —>字符串往左对齐
bpx vbaLsetFixstr —>字符串往左对齐
bpx vbaStrComp —>字符串比较
bpx vbaStrCompVar —>字符串比较
bpx rtcStrConvVar2 —>字符串类型转换
bpx rtcR8ValFromBstr —>把字符串转换成浮点数
bpx MultiByteToWideChar —>ANSI字符串转换成Unicode字符串
bpx WideCharToMultiByte —>Unicode字符串转换成ANSI字符串
bpx rtcVarFromFormatVar —>格式化字符串
bpx rtcUpperCaseVar —>小写变大写
bpx rtcLowerCaseVar —>大写变小写
bpx rtcStringVar —>重复字符
bpx rtcSpaceVar —>指定数目空格
bpx rtcAnsiValueBstr —>传回字符码(返回第一个字符的字符代码)
bpx rtcByteValueBstr —>传回字符码(返回第一个字节的字符代码)
bpx rtcCharValueBstr —>传回字符码(返回第一个Unicode字符代码)
bpx rtcVarBstrFromAnsi —>传回字符(返回 String,其中包含有与指定的字符代码相关的字符 )
bpx rtcVarBstrFromByte —>传回字符(返回 String,其中包含有与指定的字符代码相关的单字节)
bpx rtcVarBstrFromChar —>传回字符(返回 String,其中包含有与指定Unicode 的 String)
VB程序逆向反汇编常见的函数(修改版)的更多相关文章
- VB程序逆向反汇编常见的函数
VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,7 ...
- VB程序逆向常用的函数
本文转载!!! 原文地址:http://www.cnblogs.com/bbdxf/p/3780187.html 1) 数据类型转换: a) __vbaI2Str 将一个字符串转为8 位(1个字 ...
- OD 实验(十) - 对一个 VB 程序的逆向
前话: VB 程序用 OD 进行逆向的话,可以先查找相关的变量和字符串,以寻找突破口 变量: __vbaVarTstEq __vbaVarCompEq __vbaVarTstNe __vbaVarCo ...
- iOS程序逆向Mac下常用工具——Reveal、HopperDisassemble、IDA
原文在此 一.Reveal 1 一般使用 Reveal是ITTY BITTY发布的UI分析工具,可以很直观的查看App的UI布局.如下图所示: Reveal是需要付费的,需要89美元, ...
- OD学习笔记10:一个VB程序的加密和解密思路
前边,我们的例子中既有VC++开发的程序,也有Delphi开发的程序,今天我们给大家分析一个VB程序的加密和解密思路. Virtual BASIC是由早期DOS时代的BASIC语言发展而来的可视化编程 ...
- 学习笔记第六课 VB程序
VB程序的特殊地方在于: 前几课学的破解方法,诸如设置API断点,修改关键CALL的返回值,MESSAGEBOX断点等,这些对于VB程序都是无效的. 这节课是设置VB的API断点,绕过报错弹窗来破解. ...
- 从零开始的程序逆向之路 第一章——认识OD(Ollydbg)以及常用汇编扫盲
作者:Crazyman_Army 原文来自:https://bbs.ichunqiu.com/thread-43041-1-1.html 0×00 序言: 1.自从上次笔者调戏完盗取文件密码大黑客后, ...
- VB程序架构分析
在08年,我曾经写过VB程序.前面也将该VB程序的架构剥离出来并发出来共享了(具体见http://www.cnblogs.com/lzhdim/archive/2012/03/08/2385028.h ...
- Linux下简单C语言小程序的反汇编分析
韩洋原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 写在开始,本文为因为参加MOO ...
随机推荐
- C#飞行棋总结
以下是掷色子的一个代码,比较有代表性,里面的逻辑和内容都已注释,可通过注释了解这一方法的运作模式. public static void RowTouZi(int playerPos) //掷色子 { ...
- ERROR: HHH000091: Expected type: java.sql.Timestamp, actual value: java.lang.Integer
在将MySql的数据对应到Java的实体类的时候, 遇到了错误 关键点: Hibernate从mysql数据库查出来的Timestamp类型的数据, 会被Hibernate(或者是数据库连接池Drui ...
- bzoj 1098 [POI2007] 办公楼 biu
# 解题思路 画画图可以发现,只要是两个点之间没有相互连边,那么就必须将这两个人安排到同一个办公楼内,如图所示: 那,我们可以建立补图,就是先建一张完全图,然后把题目中给出的边都删掉,这就是一张补图, ...
- codevs 2853 方格游戏--棋盘dp
方格游戏:http://codevs.cn/problem/2853/ 这和传纸条和noip方格取数这两个题有一定的相似性,当第一眼看到的时候我们就会想到设计$dp[i][j][k][l]$(i,j表 ...
- 实现验证的vsftpd虚拟用户
实现基于文件验证的vsftpd虚拟用户--(一台) 一.创建用户数据库文件 vim /etc/vsftpd/vuser cd /etc/vsftpd/ db_load -T -t hash -f vu ...
- python中unicode, hex, bin之间的转换
python中unicode, hex, bin之间的转换 背景 在smb中有个feature change notify, 需要改动文件权限dacl,然后确认是否有收到notify.一直得不到这个d ...
- pandas.read_csv 报ssl.SSLError
- 开发语言之---Python
Python,如果你想进军AI,或是不想被自动化运维淘汰,Python是一门必须课. 在未来的大学课堂上,也许也会将Python加入必修中,就像Java一样. Python之“Hello World” ...
- 关于在Safari浏览器中将网页添加到主屏幕的相关设置(自定义图标,启动动画,自定义名称)
在ios中我们可以使用Safari浏览自带的将网页添加到主屏幕上,让我们的web页面看起来像native那样 第一步: 第二步: 第三步: 到这里还没结束:我们还要进行相关设置才能使我们的应用更像原生 ...
- Spring Boot集成百度Ueditor
遇到的问题: 1.将ueditor加入/static目录下,能正常显示,但是出现“请求后台配置项http错误,上传功能将不能正常使用!”(解决在下面,都是自定义上传的,如果需要官方的示例,我也无能为力 ...