关于VB中数据的存储格式和寻址方式
前言:
大家最喜欢破什么语言写的软件?相信没人会回答VB,好像一种语言越是“高级”,越是“傻瓜”,编译系统自动加入的代码就越多,会把源程序的意图隐藏起来,破解的难度反而越大(我指的是完全破解出算法,写出注册机)。用ASM直接写的程序,反汇编的结果和源程序相似得可怕,用VC写的也比较容易读懂,用DELPHI写的就有一定难度了,不过毕竟还有一个好用的DEDE,VB写的呢?冗长的代码,复杂的存储方式,铺天盖地的DLL,足以让人崩溃。以前大概用VB的还都是些菜鸟级的程序员,加的保护也非常简单,破解VB程序还不算太困难,到了现在,好像VB已经成了一种把代码复杂化的加壳软件,纷纷被各路编程好手采用,把高难度的算法用超复杂的代码保护起来,呜呼哀哉!最近连遇几个软件,全是AsProtect+VB(好像还是P-CODE),令人郁闷的组合,几天破解未果,想从头把关于VB的一些东东仔细研究一下,于是就有了这篇文章。我想高手们大概早就研究过了,也许是不屑写出来而己,还请各位多多指点。
先看看VB常用的数据类型有哪些:
代码:
Byte 1个字节 0到255 Boolean 2个字节 True或False Integer 2个字节 -32,768到32,767 Long(长整型) 4个字节 -2,147,483,648到2,147,483,647 Single(单精度浮点型) 4个字节 负数时从-3.402823E38到-1.401298E-45 正数时从1.401298E-45到3.402823E38 Double(双精度浮点型) 8个字节 负数时从-1.79769313486232E308到-4.94065645841247E-324 正数时从4.94065645841247E-324到1.79769313486232E308 Currency(变比整型) 8个字节 从-922,337,203,685,477.5808到922,337,203,685,477.5807 Decimal 14个字节 没有小数点时为+/-79,228,162,514,264,337,593,543,950,335 而小数点右边有28位数时为+/-7.9228162514264337593543950335 最小的非零值为+/-0.0000000000000000000000000001 Date 8个字节 100年1月1日到9999年12月31日 Object 4个字节 任何Object引用 String(变长) 10字节+串长度 0到大约20亿 String(定长) 字符串长度1到大约65,400 Variant(数字) 16个字节 任何数字值,最大可达Double的范围 Variant(字符) 22个字节+串长度 与变长String有相同的范围
像Integer,Long,Single,Double等“直接”的类型比较容易,和其他的语言一样直接看内存就可以了。
比较特殊的是Currency,他的值要除10000才是真正的值,不过这个用的不多。
最麻烦的是Variant类型,因为VB是设计成一种傻瓜式的语言,对数据类型没有严格的规定,甚