首页
社区
课程
招聘
[原创]VBA逆向初探
发表于: 2014-9-7 11:35 8502

[原创]VBA逆向初探

2014-9-7 11:35
8502

VBA逆向的资料很难找,VB的能找到一些,VB历史已久远,价值可能不是很高,再研究价值可能不是很高。本文是本人研究的...不一定正确,当是抛砖引玉,边研究,边修改。想到什么,研究什么,就写什么。
      本文以ACCESS 2000 的VBA 为研究对象。
     以下开始,
     1.access 2000 的文件MDB MDE是以4K,4096字节对齐,下面一个4096字节叫页。有点意思,一些文件系统也是4K对齐?是不是有关系?
     2.access 2000 的VBA代码是存储在 msaccessobject表。和其他表存放方式似乎不同。在ACCESS 打开隐藏的系统表可以看到,导出就有问题。
     用MDBTOOLS不支持VBA对象。
     所以没有能真正用的工具。只能DIY。
     很容易就可以找到存放VBA代码的页。
     数据一般从页的0X5D 开始,到页0ff4结束。
    0x04是一个DWORD的类型。代表VBA数据定义页.
    ff5是一个DWORD的类型。是代表的当前多少页。
    根据任何一个VBA数据页,可以找VBA数据定义页,根据数据定义页,遍历MDE所有页,简单的C语言写个代码就可以dump出vba的数据。
    3.变量,VBA的P-CODE 应该是能找到数据定义类型的。可以逆向CodeProtector这个软件看看。
    4.函数,VBA的函数之前有一个DWORD,代表函数的长度.
      一般是0x00 largeboss的代码开始。
     可以在vbe6.dll下switch() 的断点。VBE6.DLL 版本6.0.84.35 。
    base 在 65080688
   lead1(fb) 在  65080a88
   lead2(fc) 在  650800e88
   lead3(fd) 在 65081288
   lead4(fe) 在 65081688
   lead(ff) 在 65081a88

    VBA虚拟机的IP是使用ESI。嗯嗯,调试的时候跟随[ESI]的数据,避免跟丢了。
    5.thiscall
    thiscall的指令码为0x10 要特别小心,跟踪进去,会调用this的方法。可以dump出来,反编译.
    有个CALL,跟进去,会改变[ESI]的数据,也就是虚拟机的指令。这时候就到了thiscall 的子程序里面。
    退出子函数时,会pop ESI,这时会到了 父函数。
   
    6.反编译
    反编译vb的不少,vba的很少。基本只能自己写点小工具反汇编。有很多开源的代码可以利用。

网上找的VB的P-CODE 基本不能用,有些事加密的。这份P-CODE指令,是我自己修改过的。只适用VBE6.DLL还有部分指令,未完成逆向。根据这份指令,自己完全可写一个反汇编的程序出来。很简单。
OPCODES.TXT

这个帖子是探索逆向VBA的PCODE,逆向VBA程序的算法,想破解ACCESS密码的请无视。

...未完...待续,待修改.


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 3
支持
分享
最新回复 (8)
雪    币: 156
活跃值: (1552)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
VBA保护弱,可以看到源代码,逆向有意义吗?
2014-9-7 14:11
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感觉意义不大。。。
2014-9-7 14:29
0
雪    币: 3496
活跃值: (749)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Acc的保护比较强,编译为MDE后很难逆向的。
2014-9-8 05:46
0
雪    币: 3496
活跃值: (749)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有些ERP模块是用Acc写的.代码很难逆出。
2014-9-8 05:47
0
雪    币: 5666
活跃值: (3779)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
VBA Password Bypasser?
2014-9-9 22:50
0
雪    币: 1436
活跃值: (3861)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
http://www.0daydown.com/02/21495.html
还是这个好用
2014-9-9 22:59
0
雪    币: 86
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
确实如此,要是有算法...
2014-9-18 15:16
0
雪    币: 86
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不知道 VBA可以编译成p-code 么,也能看到源代码么?求软件...
2014-9-18 15:19
0
游客
登录 | 注册 方可回帖
返回
//