P-Code逆向杂谈

来源:互联网 发布:大数据自学书籍 编辑:程序博客网 时间:2024/05/22 05:03

写在前头:
在看雪上逛的时候,看见有一求助贴,神经一发就看了一下,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解释执行,通过对其反编译就可以得到其原始代码,(请注意反汇编和反编译的区别),还有一种办法就是动态追踪虚拟机的执行。


上面代码是MSVBVM60.dll虚拟机典型P-Code解释执行引擎,ESI标示P-Code的地址,MOV指令将P-Code中的数据压入堆栈(2)后读取操作码到AL(4),JMP指令根据AL值跳到相应的操作码处理子程序(6)。操作码处理子程序将处理结果放到堆栈后返回到虚拟机,开始处理下一个P-Code(5)。JMP指令跳到的操作码处理子程序一般通过call ebx来调用MSVBVM60.dll export出来的函数,call eax执行真正的程序执行流(就是我们所关心的注册码比较之类的地方)。
MD5算法
待续。。。。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕妇拉不出来是怎么办 孕妇严重便秘拉不出来怎么办 10小孩肛裂出血怎么办 水痘结痂蹭掉了怎么办 水痘留下的黑印怎么办 水痘痂掉了有坑怎么办 出水痘留下的疤怎么办 宝宝出水痘抓破怎么办 水痘结痂碰掉了怎么办 结痂掉了有坑怎么办 水痘留下的红印怎么办 点痣留下的凹坑怎么办 得水痘留下坑了怎么办 脚磨破了化脓了怎么办 水痘被扣的破了怎么办 水痘睡觉压破了怎么办 水痘破了化脓了怎么办 外阴长水痘破了怎么办 脸上的水痘破了怎么办 小孩出水痘破了怎么办 50多岁子宫肌瘤怎么办 一到晚上肛门痒怎么办 肛门和外阴很痒怎么办 脚磕到了肿了怎么办 脚碰到了肿了怎么办 腿被车子撞肿了怎么办 肛门长了小疙瘩怎么办 屁眼长了个包怎么办 屁股上长了个肉球怎么办 过敏了全身都痒怎么办 吃了螃蟹全身痒怎么办 全身痒眼睛肿了怎么办 感染了hpv病毒怎么办16 高危型hpv阳性52怎么办 腰椎盘突出腿疼怎么办 腰椎间盘突出压迫神经怎么办 疣体长到宫颈了怎么办 龟头的系带断了怎么办 龟头与系带断了怎么办 舌头下长肉芽痛怎么办 脑组织供血不足怎么办