当前位置: 首页 > news >正文

vb逆向常用函数

vb逆向常用函数

先逐步积累,积累够了做个x32dbg插件自动显示参数和注释以及函数功能。

  • __vbaLenVar 求字符串长度
push edx                                                | 参数1,Variant字符串
push eax                                                | 参数2,出参字符串长度
call dword ptr ds:[<&__vbaLenVar>]                      | 求字符串长度,返回值eax,也表示字符串长度
  • rtcMidCharVar vb中Mid函数,功能为截取字符串
push eax                                                |参数1,裸I4,字符串start
lea eax,dword ptr ss:[ebp-64]                           |
lea ecx,dword ptr ss:[ebp-8C]                           |
push eax                                                |参数2,Variant字符串
push ecx                                                |参数3,ecx+10截取字符串长度
call dword ptr ds:[<&rtcMidCharVar>]                    |截取字符串,返回值eax表示截取字符串
  • rtcLeftCharVar vb中的Left函数,功能为从左侧截取长度为length的子串,返回值保留才eax中
0040493A | push 1                                                  |参数1,length从左侧提取的字符串长度
0040493C | lea ecx,dword ptr ss:[ebp-74]                           |
0040493F | push eax                                                |参数2,Variant字符串
00404940 | push ecx                                                |参数3,出参,截取结果,Variant字符串
00404941 | call rtcLeftCharVar                                     |
  • __vbaStrErrVarCopy 将字符串从Variant复制到字符串首地址,返回值eax为字符串的值
lea edx,dword ptr ss:[ebp-8C]                           |
push edx                                                |Variant字符串
call dword ptr ds:[<&__vbaStrErrVarCopy>]               |
  • __vbaVarMove 将变量从edx指向地址移动到ecx指向地址,同时将保存在eax中返回
lea edx,dword ptr ss:[ebp-9C]                           |
lea ecx,dword ptr ss:[ebp-54]                           |
mov dword ptr ss:[ebp-94],eax                           | 
mov dword ptr ss:[ebp-9C],8                             |
call __vbaVarMove                                       |
  • __vbaStrVarVal 将Variant字符串转换成裸字符串,结果保存在eax中
lea eax,dword ptr ss:[ebp-54]                           |
lea ecx,dword ptr ss:[ebp-68]                           |
push eax                                                | Variant字符串
push ecx                                                |
call dword ptr ds:[<&__vbaStrVarVal>]                   |
  • rtcAnsiValueBstr 计算字符串第1个字符的ascii值,并在ax中返回
push eax                                                |字符串首地址
call dword ptr ds:[<&rtcAnsiValueBstr>]                 |
  • __vbaMidStmtVar 将变量转换为字符串,并将字符串指定起始位置,指定长度替换成指定字符串
lea ecx,dword ptr ss:[ebp-34]                           |
push ecx                                                | 参数1,Variant变量
push 4                                                  | 参数2,起始位置
lea edx,dword ptr ss:[ebp-AC]                           |
push 1                                                  |参数3,长度
push edx                                                |参数4,要替换的字符串
mov dword ptr ss:[ebp-A4],andrénalin.2.401C34           |
mov dword ptr ss:[ebp-AC],8                             |
call __vbaMidStmtVar | 结果保存在第1个参数指向的地址中
  • __vbaVarTstLe 判断参数1是否小于等于参数2,返回值ax,FFFF表示参数1小于等参数2,0x00表示参数1大于参数2
push ecx                                     | 参数1,左边被比较值
push edx                                     | 参数2,右边被比较值
call dword ptr ds:[<&__vbaVarTstLe>]         | 判断参数1是否小于等于参数2,返回值ax,FFFF表示参数1小于等参数2,0x00表示参数1大于参数2
  • __vbaI4ErrVar Variant变量转换为I4类型,返回值eax为I4类型
lea eax,dword ptr ss:[ebp-7C]                           |
lea ecx,dword ptr ss:[ebp-24]                           |
push eax                                                |参数1,未知作用
push ecx                                                |参数2,Variant变量
mov dword ptr ss:[ebp-74],1                             |
mov dword ptr ss:[ebp-7C],ebx                           |
call dword ptr ds:[<&__vbaI4ErrVar>]                    |
  • __vbaVarTstEq 判断两个变量是否相等,不相等eax返回0x0,相等返回0xFFFFFFFF
lea eax,dword ptr ss:[ebp-6C]                           |
push eax                                                | 参数1,比较Variant变量1
push ecx                                                | 参数2,比较Variant变量2
mov dword ptr ss:[ebp-58],0                             |
mov dword ptr ss:[ebp-6C],8008                          |
call dword ptr ds:[<&__vbaVarTstEq>]                    | 判断两个变量是否相等
  • __vbaI4Str 把字符串转换为I4,返回值在eax中
mov eax,dword ptr ss:[ebp-28]                           |
push eax                                                | 参数1,字符串
call dword ptr ds:[<&__vbaI4Str>]                       |
  • rtcBstrFromAnsi 将Ansi值转换成字符串,eax做返回值,eax中字符串首地址
movsx edx,ax                                            |
push edx                                                |参数1,ansi值,例如eax=31
call dword ptr ds:[<&rtcBstrFromAnsi>]                  |例如eax=字符串首地址
  • rtcR8ValFromBstr 从裸字符串转换8字节浮点数,返回结果存储在st0中
0040494D | push eax                                                |裸字符串
0040494E | call dword ptr ds:[<&rtcR8ValFromBstr>]                 |
  • __vbaI4Var 将一个VARIANT转换为I4(即一个长整数),结果在eax中返回
00404960 | push ecx                                                |
00404961 | push edx                                                | 参数1,VARIANT
00404962 | mov dword ptr ss:[ebp-5C],1                             |
00404969 | mov dword ptr ss:[ebp-64],2                             |
00404970 | call dword ptr ds:[<&__vbaI4Var>]                       |
  • rtcMidCharBstr 字符串取指定位置的字符作为子串,返回值字符在eax中
0040497F | push ebx                                                | 参数1,指定索引位置
00404981 | push eax                                                | 参数2,字符串
00404982 | call dword ptr ds:[<&rtcMidCharBstr>]                   |
  • rtcHexBstrFromVar variant变换转换为16进制字符串,结果保存在eax中返回
004049D8 | push eax                                                | variant变量
004049D9 | call dword ptr ds:[<&rtcHexBstrFromVar>]                | variant变换转换为16进制字符串
http://www.lryc.cn/news/571901.html

相关文章:

  • Github的仓库使用方法的小白教程
  • 分布式顺序数据发生器
  • 国产服务器【银河麒麟v10】【CPU鲲鹏920】部署Nacos
  • 嵌入式自学第四十二天
  • 介绍下分布式ID的技术实现及应用场景
  • 轻量化分布式AGI架构:基于区块链构建终端神经元节点的互联网智脑
  • 【AI Study】第三天,NumPy(3)- 基础知识
  • 英一真题阅读单词笔记 13年
  • 从0开始学习R语言--Day27--空间自相关
  • 爬虫技术:数据挖掘的深度探索与实践应用
  • 榕壹云外卖跑腿系统:基于Spring Boot的开源生活服务平台技术解析
  • python打卡day54@浙大疏锦行
  • 如何高效实现公司文件管理
  • 精通现代开发栈:Python、Git与Docker实战指南
  • 警惕GO的重复初始化
  • RabbitMQ七种工作模式
  • Redission实现的分布式锁的可重入性
  • Web安全性测试--超详细用例CASE整理总结
  • leetcode-3405 统计恰好有k个相等相邻数组的个数
  • C2远控篇CC++InlineHook挂钩动态API调用突破内存加密导入表检测
  • JSX 详解:React 的核心语法
  • Meta V-JEPA 2:革命性的视频联合的世界模型
  • OpenStack体验
  • 深入理解 MySQL 事务:保障数据操作的原子性与一致性
  • MySQL 库操作和表操作
  • 【51单片机】8. 矩阵LED显示自定义图案、动画
  • Mac m1 通过docker镜像安装kafka
  • 【GateWay】和权限验证
  • RKNN开发环境搭建3-RKNN Model Zoo 板载部署以Whisper为例
  • 【AI作画】用comfy ui生成漫画风图画