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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值