php opcode逆向还原,[原创]VM代码的还原-插件篇

首先,先给出几个工具.大概都是伪码类的.之前也介绍过.首先推荐的是zdhysd 师傅的VMP分析插件 1.4 之前介绍过了..

下载地址:http://bbs.pediy.com/thread-154621.htm

剩下的大家也都用过.一个是木木老师的OoWoodOne 堪比Ximo师傅的zeus 个人用的觉得比zeus更好用一点.而且带源码.

下载地址:http://bbs.pediy.com/thread-203683.htm

其他的一些ximo老师的zeus,noboy老师FkVMP 之类的大家都熟悉就不提了..伪码类的VMP分析插件 1.4 用起来很好.除了某些小问题.而且最主要可以自定义规则识别.这个是很强大的地方..如果,对代码很熟悉那么还原起来 还是比较快的.只不过是手动还原罢了.容易出错.这些主要都是逻辑还原.本人觉得从技术上来讲纯asm还原并不现实.因为,我们所谓的轮转机制只不过是一个用寄存器体系 去理解的VM.跟实际寄存器并没有什么关系. 对于VM分析来讲  你用的是哪个寄存器 对我们对VM进行分析 并无影响.可以用伪码进行代表 还原逻辑.然后 再反推寄存器.这是一个很大的工程..根据我已知的消息.其实 已经有很多还原引擎 只不过 我们这些菜鸟未曾一见. 比如大部分cug ccg的前辈....好啦 吹逼就到这里.VM机制不是这个帖子要讲的.如果要讲 也不是我这个菜鸟能讲的..我只聊聊插件怎么用...233333很早之前用过VMSweeper1.4  觉得不太好用 之后就没有关注过.然后,这几天有个项目要还原VM.开始的时候 用ZEUS 分析好vmhandler 然后到VMVMP 也就是 disp什么的那个地方 分配跳转的..英文不好.专业名词不会.大概理解吧...手动记事本写了三页..瞬间觉得不是人做的工作..心好痛.又不会编程.得了吧..找找现成插件吧..开始的时候用的VM 分析插件handler 分析没错 但是算法分析有问题.调试起来问题很多..蛋疼的一腿..然后 就拿起了.VMSweeper 但是,还是不行.局限性太大...可是 默默的发现了 这玩意 还原VM还原起来 很是舒服啊. 除了很多插件上的BUG 但是 堆栈反推没有出错.于是有了这篇文章.事先说明.这些插件使用的局限性很大.毕竟一个系统的还原插件不是一时可以写出来的.就算写出来 大部分师傅 也只是 扔着烂硬盘....对 别看别人 就是你brack老师....这篇文章 我只是简单讲解一下.实际应用之中会遇到很多问题.大部分时候不适合实际应用....开课:先上未被VM时候的原始代码004010A1  /.  55            push ebp

004010A2  |.  8BEC          mov ebp,esp

004010A4  |.  81EC 0C000000 sub esp,0xC

004010AA  |.  C745 FC 00000>mov [local.1],0x0

004010B1  |.  C745 F8 00000>mov [local.2],0x0

004010B8  |.  EB 10         jmp short 测试.004010CA

004010BA  |.  56 4D 50 72 6>ascii "VMProtect begin",0

004010CA  |>  B8 A8E64700   mov eax,测试.0047E6A8                      ;  ASCII "23333"

004010CF  |.  50            push eax

004010D0  |.  8B5D FC       mov ebx,[local.1]

004010D3  |.  85DB          test ebx,ebx

004010D5  |.  74 09         je short 测试.004010E0

004010D7  |.  53            push ebx

004010D8  |.  E8 00010000   call 测试.004011DD                         ;  jmp 到 

004010DD  |.  83C4 04       add esp,0x4

004010E0  |>  58            pop eax

004010E1  |.  8945 FC       mov [local.1],eax

004010E4  |.  B8 AEE64700   mov eax,测试.0047E6AE                      ;  你猜

004010E9  |.  50            push eax

004010EA  |.  8B5D F8       mov ebx,[local.2]

004010ED  |.  85DB          test ebx,ebx

004010EF  |.  74 09         je short 测试.004010FA

004010F1  |.  53            push ebx

004010F2  |.  E8 E6000000   call 测试.004011DD                         ;  jmp 到 

004010F7  |.  83C4 04       add esp,0x4

004010FA  |>  58            pop eax

004010FB  |.  8945 F8       mov [local.2],eax

004010FE  |.  8B45 F8       mov eax,[local.2]

00401101  |.  50            push eax

00401102  |.  FF75 FC       push [local.1]

00401105  |.  E8 FAFEFFFF   call 

0040110A  |.  83C4 08       add esp,0x8

0040110D  |.  83F8 00       cmp eax,0x0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows7及vista系统可用,但需要去掉UAC,或者用管理员权限运行主程序。 如无意外,黑刀Dezender 5.0 三套解密内核版 将会是最终版本,除非新的解密内核出现,否则今后也将不再更新,也请勿再加本人QQ咨询任何关于Zend解密的问题!感谢各位黑刀爱好者关注,敬请期待本人其他作品。谢谢! 反馈问题情况汇总: 1、有很多朋友说下载了最新版还是解不出来,是因为他们把程序放在了桌面上或者Program Files目录下。大家一定要记得,不要把黑刀Dezender的主程序以及需要解密的PHP文件放置在目录名包含空格的目录内,比如桌面、Program Files目录等,除了目录名不能包含空格以外,也不能包含英文的句号,以免程序将目录当做文件来处理,造成无法解密的情况。还有一种可能性,是因为被加密了的PHP文件采用了最新版的Zend来进行的加密,所以黑刀Dezender解不出来。 2、解密出来的文件有“乱码”:这种情况通常是因为PHP程序在加密时采用了混淆函数,而所使用的函数又是Dezender无法识别的,所以在函数的部分变成了“乱码”。目前唯一的解决办法只能是更新自己的混淆函数库来尝试解密,别无他法。 3、网友“李向阳”问:“我解开的文件能读,但是有很多很基本的语法问题。不知道是怎么回事!” 对于这个典型问题,我只能回答说,解密出来的文件不可能百分百还原为原始未加密的文件的。在遇到需要手工去修复代码的情况时,就要求Dezender的使用者具备相应的PHP程序编写知识。如果不具备?自己找书找资料看。呵呵。 4、如果出现如下的错误提示:“无法判断程序输入点于动态链接库php5ts.dll上”说明dezender和原有的PHP环境冲突,可考虑卸载原有PHP环境,或安装虚拟机,在虚拟机上使用dezender。实在不行,换台电脑试试看吧。呵呵。虚拟机的下载地址:http://tmd.me/2008/read.php?5 重要声明:   黑刀Dezender本身只是个集成工具而已,主程序实际上只是用Delphi开发的GUI界面的外壳程序,核心的解密功能部分来自互联网上的收集整理,我所做的外壳编程,仅是在原有的各个解密内核版本Dezender的功能上,开发基于windows的用户界面,以便于使用者对原有类似“DOS”环境下的各种应用功能的Windows实现。   关于加密保护自己的PHP程序的问题:   类似微盾加密的、可以混淆函数和变量的加密方式,官方名字叫做“PHPlockit”,微盾的php加密专家也有类似的功能,但似乎会造成程序无法正确运行。目前在我没有开发新版的解密工具之前,据我所知除我之外能手工解密“类微盾加密混淆函数及变量”的人并不多,大家可以试试。其他比较安全的加密方式比如Ioncube等也可以使用,只是国内支持该加密方式的虚拟主机不多,如果是独立服务器,可以考虑采用。   而Zend的混淆函数也是至今无法完全突破的问题,大家在开发自己的PHP程序时,可以采用较长的自定义函数名和变量名,这样Dezender就无法正确的识别出明文来了,就算解密掉程序本身,因为函数和变量都已经被混淆,自然也很难让程序正确运行了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值