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算法
待续。。。。
- P-Code逆向杂谈
- iOS APP 逆向安全杂谈
- 初识p-code (pcode)
- P-code学习
- iOS APP 逆向安全杂谈之二
- iOS APP 逆向安全杂谈之三
- 休闲麻将 P-CODE 浅析
- 【入驻杂谈】Code Changes World.
- google code jam 2008 Mousetrap (逆向)
- 杂谈:公司固话分机的P/T
- http://code.google.com/p/swfobject/
- android http://code.google.com/p/roboguice/
- https://code.google.com/p/baiduhook/
- http://code.google.com/p/aspjson/
- https://code.google.com/p/j2objc/
- 【杂谈】Clean Code 代码整洁之道学习总结
- 杂谈
- 杂谈
- 追MM与23种设计模式
- Linux下免费数据库PostgreSQL开发入门
- 使MDI子窗体只能在父窗体范围内拖动
- 中华文明的象征
- 规划事情前需要考虑的几个要素.
- P-Code逆向杂谈
- 信息处理基本原理-设计3
- 涉足···编程
- linux安装软件详细解答 rpm tar.gz tar.z tar.bz2 tar.tgz .deb .bin
- 产品经理漫谈
- StringBuilder的使用
- 十款另类搜索引擎
- 顯示目前上線使用人數相關資訊(Show Inetusers)
- 继续杂感