VB程序逆向

1、VB介绍

Visual Basic 是一种具有良好图形用户界面的程序设计语言。

Visual的意思是“可视的”,也就是直观的编程方法,在编程时不需要编写大量代码去描述界面元素的外观和位置,只需把预先建立的对象拖放到窗体上。Basic是指BASIC语言,VB使用了BASIC语言作为代码。

VB采用面向对象和事件驱动的程序设计机制,这种机制下,VB程序往往是多线程的,在分析过程中定位主线程和事件处理过程尤为重要。

在编译方式上,VB既有直接编译生成的可执行程序,也有间接编译生成的可执行程序,不同的编译方式有不同的分析方法。直接编译又被称为自然编译(Native-Compile),是编译器将高级语言转化为汇编代码,并经链接生成exe程序的过程;间接编译又被称为伪编译(Pcode-Compile),伪编译是编译器将高级语言转换为某种语言后,将其解释、执行此代码的一段程序一同链接,生成exe程序。

Native和Pcode的比较

Native自然编译

自然编译的VB程序,直接生成x86汇编代码,可以直接使用OD、IDA进行分析。

但是需要注意的是,VB函数的调用遵循 stdcall 原则,即函数入口参数按从右到左的顺序入栈,并由被调用的函数在返回前清理传送参数的内存栈。而且VB程序不是直接调用Windows API函数,而是调用VB库里的函数。如图所示的是某个VB样本的导入函数情况,所有导入函数都来自于msvbvm*.dll。

VB的程序中会有大量对控件属性的操作,这些操作往往是通过虚函数实现的。所以在OD动态调试时,会发现有大量call [ecx+*]形式的调用,可以通过查表迅速定位其调用的函数

Pcode伪编译

运行时依赖解释器将伪代码翻译为汇编代码再执行。

如图所示,是Pcode编译的VB程序反汇编得到的结果的片段,可以看到Pcode编译得到的是Pcode汇编代码,而不是直接得到x86汇编代码。

 Pcode编译的VB程序,在执行时会调用msvbvm*.dll首先对Pcode汇编进行解释,翻译成x86汇编代码,然后才能由CPU执行。如果使用OD跟踪Pcode编译的VB程序,很容易迷失在伪代码解释引擎中。

编译方式识别

1、用die可以直接识别

2、导入函数数量上的比较,Native编译的程序往往有比Pcode编译的程序更多的导入函数:

3、汇编代码比较,Native编译直接反汇编为x86汇编语言,Pcode编译反汇编为Pcode伪汇编代码:

 

2、分析工具和技巧

VB Decompiler目前是VB程序逆向分析最强大的功能,支持VB5/6,同时支持Native和Pcode编译的程序。

此软件使用也很简单,直接将VB程序拖拽进VBDe即可,该软件能将VB窗体的事件处理过程识别出来,还能显示对应的反汇编和反编译代码:

 

VB Decompiler是一款静态分析工具,没有办法动态调试。如果是Native程序,可以结合OD进行动态调试,如果是Pcode程序,就需要使用WKTVBDebugger。

WKTVBDebugger是一款古老的软件,也是Pcode程序最好用的调试软件。此软件的具体使用可以参考https://www.52pojie.cn/thread-33119-1-1.html

 

此软件在使用中,有几个方面要注意:

待分析的VB程序需要和复制到 WKTVBDebugger 安装目录里调试,即与 Loader.exe 同一目录;

需要将安装目录的 WKTVBDE.dll 文件复制到系统目录里;

需要将 MSVBVM60.DLL 替换成 2003 年以前版本。

VB程序真正入口

如图所示,VB程序的ENTRY POINT进入后第一个指令是push指令,如果我们从这里开始分析,就会进入编译器的代码中,浪费大量的分析时间,所以我们需要定位VB程序真正的入口。

 

push xxxxxxxx压入的实际上是一个指针,指向VBHEADER的结构。此结构体的解析如下:

 

我们需要重点关注VBHEADER结构体中的成员pSubMain,这才是VB程序真正的入口。

在本例中,入口地址是0x4327b0,接下来我们可以下段直接运行到这里,然后再进行分析:

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值