php opcodes 还原代码,【资料】用Oreans UnVirtualizer还原VM代码

本帖最后由 [VIP]_年华╮似 于 2016-6-12 16:56 编辑

VM一直很头痛,在逆向实践一般尽量想办法避开它,当黑盒来处理。有时候不面对她又不行,正好在论坛上看了Oreans UnVirtualizer插件,拿来实践学习下。新手可以了解下恢复VM代码的过程,高手可以帮助纠正错误并指导深入

相关工具可在网上找到:Oreans UnVirtualizer   VM恢复插件

Code Virtualizer v1.3.8  加密工具

OD  调试工具 加密目标程序源码选择Code Virtualizer v1.3.8中自带的例子

路径:\Examples\C\VC\32-bit\Via API

编译环境 VC6.0

先观察下源码中准备加密的部分

代码:

//

if (LOWORD(wParam) == IDC_BUTTON_ENCODE1)

{

// the following code, inside the VIRTUALIZER macro, will be converted

// into virtual opcodes

VIRTUALIZER_START  //VM开始标志宏

for (int i = 0; i < 10; i++)

{

value += value * i;

}

MessageBox(NULL, "This is the Virtualizer macro #1", "Virtualizer Macro", MB_OK + MB_ICONINFORMATION);

VIRTUALIZER_END  //VM结束标志宏

}

else if (LOWORD(wParam) == IDC_BUTTON_ENCODE2)

{

// the following code, inside the VIRTUALIZER macro, will be converted

// into virtual opcodes

VIRTUALIZER_MUTATE2_START  //VM开始2

for (int i = 0; i < 10; i++)

{

value += value * i * 3;

}

MessageBox(NULL, "This is the Virtualizer with mutation level 2", "Virtualizer Macro", MB_OK + MB_ICONINFORMATION);

VIRTUALIZER_END //VM结束2

}

///

IDA,">用Code Virtualizer 载入编译链接后生成的目标程序:vc_example.exe

thread-506133-1-1.html

保护选项就默认吧:

thread-506133-1-1.html

代码虚拟选项:

thread-506133-1-1.html

点击相应的加密块,下面的汇编代码窗口出现对应的汇编代码,这个也可以在OD中得到验证

thread-506133-1-1.html

点Protect按钮实施保护,生成VM过的程序,我们叫vmtest.exe吧

thread-506133-1-1.html

现在用OD载入VM过的程序vmtest.exe,Ctrl+G 来到0040111C ,看到了吗,被VM蹂躏的实景如此! 到00401167时结束,又变成能看懂的汇编代码了

thread-506133-1-1.html

同理可以观察另一代VM过的代码:0040117F - 004011CD

好,现在来看看怎么用Oreans UnVirtualizer 1.8插件(OreansUnVirtualizer.dll)来恢复吧

解压插件后放到od-plug目录,用OD载入vmtest.exe,Ctrl+G 来到0040111C,此行右击鼠标选择Oreans UnVirtualizer - Find References,

thread-506133-1-1.html

填写vm开始地址和大小,大小可以放大些,如果不清楚的话。

thread-506133-1-1.html

出现下面的窗口,最小化它

thread-506133-1-1.html

在0040111C右键选择下面

thread-506133-1-1.html

确定后出现一个记事本,里面是已经还原了的VM汇编代码

thread-506133-1-1.html

对照VM加密前的汇编代码发现基本一致。

到此终于对VM代码还原有一个初步的接触,这个插件我也是刚玩,细节的东西还不了解,请高手回复指导,指正错误,推荐其它好用的VM修复插件及使用方法,谢谢。@pediy.com

thread-506133-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值