吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4581|回复: 0
收起左侧

[其他转载] 【资料】用Oreans UnVirtualizer还原VM代码

[复制链接]
[VIP]_年华╮似 发表于 2016-6-12 16:39
本帖最后由 [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

保护选项就默认吧:

代码虚拟选项:

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


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

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

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

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

解压插件后放到od-plug目录,用OD载入vmtest.exe,Ctrl+G 来到0040111C,此行右击鼠标选择Oreans UnVirtualizer - Find References,
填写vm开始地址和大小,大小可以放大些,如果不清楚的话。


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


在0040111C右键选择下面


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


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

免费评分

参与人数 3吾爱币 +1 热心值 +3 收起 理由
冷俊宇 + 1 + 1 谢谢@Thanks!
榻榻米 + 1 用心讨论,共获提升!
寒枫雨雪 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
叫我屌炸天 发表于 2016-6-12 16:52
提示: 作者被禁止或删除 内容自动屏蔽
www137709554 发表于 2017-3-26 19:54
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 15:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表