当前位置: 首页 > 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(即一个长整数)
00404960 | push ecx                                                |
00404961 | push edx                                                |
00404962 | mov dword ptr ss:[ebp-5C],1                             |
00404969 | mov dword ptr ss:[ebp-64],2                             |
00404970 | call dword ptr ds:[<&__vbaI4Var>]                       |

相关文章:

  • 配置外设参数与时钟频率 (PCLK1, PCLK2) 的关系
  • 图书整理--LeetCode
  • Linux操作系统之进程(六):进程的控制(上)
  • 01初始uni-app+tabBar+首页
  • 第八节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(下)
  • 【redis】安装与使用
  • Unity 在Scroll View内连续截图并保存本地(把滚动列表内的内容截成一个长图)
  • 自然语言处理【NLP】—— CBOW模型
  • JavaEE->多线程1
  • Vue + Spring Boot 前后端交互实践:正确使用 `Content-Type: application/json` 及参数传递方式
  • SonarQube 25.6 完整指南:部署、使用与 CI/CD 集成
  • 【深度学习】TensorFlow全面指南:从核心概念到工业级应用
  • FPGA基础 -- Verilog语言要素之变量类型
  • JavaSE - Object 类详细讲解
  • C/C++中的位域(Bit-field)是什么?
  • 自然语言处理(NLP)核心技术:从词嵌入到Transformer
  • SSM框架:企业级Java开发利器
  • 【CUDA编程】OptionalCUDAGuard详解
  • 秋招是开发算法一起准备,还是只准备一个
  • 6.IK分词器拓展词库
  • 网站维护 关站 seo/成都seo经理
  • 电商网站设计周志/湖南网络推广排名
  • wordpress商城+微信/seo搜索引擎实训心得体会
  • 政府网站维护方案/百度搜索排行榜
  • 郑州网站制/seo推广公司价格
  • 武进网站建设价位/济南网站优化排名