写在前头:
在看雪上逛的时候,看见有一求助贴,神经一发就看了一下,VB的,而且还是P-Code格式的,呵呵,虽说没破过几个P-Code的VB,但是还是很快的找到了注册码,呵呵,使用明码比较的,感觉还不知足就打算追下其注册码,啥都不想了埋头苦追注册算法,追了几天,相当的累,把周末时间都搭上,最后才发现我竟然把MD5算法给追出来了,汗死了,谁叫我是个算法盲啊。
P-Code逆向&MD5算法
P-Code逆向
大家都知道VB程序编写后有两种编译方式,Native和P-code,Native顾名思义就是本地方式,就向像VC那样将VB高级语言编译链接成机器码。而P-Code类型则是为了实现类似java那样的“一次编译,到处运行”的目的,VB编译器将VB高级语言先编译成一种比较紧凑的中间语言格式,“到处运行”的实现是通过在不同平台上安装MSVBVM60.dll来解释VB编译器生成的中间语言。呵呵,不就是Java么,MSVBVM60.dll的功能不就是Java虚拟机的功能,MSVBVM60.dll从词义上也可以猜出,MicroSoft VB Virtual Machine == MSVBVM。关于VB P-Code的逆向,由于VB程序是由虚拟机解释执行的,即MSVBVM.dll解释执行,通过对其反编译就可以得到其原始代码,(请注意反汇编和反编译的区别),还有一种办法就是动态追踪虚拟机的执行。