[原创]用Oreans UnVirtualizer还原VM代码
作者:sungy
时间:2014-09-18
对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
先观察下源码中准备加密的部分
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
//////////////////////////////////////////////////////////////////////////////////////////////////////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 }/////////////////////////////////////////////////////////////////////////////////////////////////////// |
用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修复插件及使用方法,谢谢。交流南鹅:659076544

[原创]用Oreans UnVirtualizer还原VM代码的更多相关文章
- 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本
<zw版·Halcon-delphi系列原创教程> 只有2行代码的超市收款单ocr脚本只有2行代码的超市收款单ocr脚本 发了这么多教程,有网友问,为什么没有ocr的. 的确,在 ...
- pyinstaller 还原python代码的方法
pyinstaller 的作用就是将python打包成对应平台的可执行文件.一般这种可执行文件的体积都比较大. 我们可以先通过逆向软件查看一下具体信息 查看字符串信息 只要有诸如以上的字符串 就说明这 ...
- SqlServer 还原数据库 代码实现
RESTORE DATABASE TargetDB FROM DISK = 'D:\DataBase\DB.bak' with replace, MOVE 'DB' TO 'D:\DataBase\T ...
- 【原创】够强!一行代码就修复了我提的Dubbo的Bug。
这是 why 技术的第 28 篇原创文章 之前在<Dubbo 一致性哈希负载均衡的源码和 Bug,了解一下?>中写到了我发现了一个 Dubbo 一致性哈希负载均衡算法的 Bug. 对于解决 ...
- [原创]Android Lollipop (5.0) 原生代码 Settings 首页加载逻辑分析
主入口为com.android.settings.Settings. 这只是一个wrapper的类, 它继承于 SettingsActivity类,并且声明了一堆公有的继承于SettingsActiv ...
- 数据库备份与还原SQL代码
--备份数据库 --必须先创建Backup文件夹 ) SET @name = 'D:\Backup\DingHanECard_V2_ZQGDJ_' ), ) + '.bak' BACKUP DATAB ...
- 使用VBA进行JS加密的反混淆,还原JS代码。
本文地址:http://www.cnblogs.com/Charltsing/p/JSEval.html 联系QQ:564955427 类似下面的代码是登陆 全国企业信用信息公示系统(安徽)(网址:h ...
- 怎么处理Win7系统备份还原提示代码0x80042302的错误?
我们都知道Win7系统自带备份还原功能,可以在电脑遇到小问题时通过还原至之前备份的正常系统来解决,非常的方便.但是有些用户在使用备份还原功能时,系统会提示0x80042302错误,这该怎么办呢?下面好 ...
- 【原创】微信最新表情js代码
最近在做仿微信聊天表情发送功能,所以需要展示常用的105个表情. 因为对接微信公众号的时候,用户聊天过程中发送的表情,微信服务器会转成对应的代码传给我们的服务器,类似如下: :/::)/::~/::B ...
随机推荐
- ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但没有 https 基址
WCF 发布,本机正常,服务器报错,信息如下: ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但 ...
- 【C#】访问泛型中的List列表数据
光看标题的确不好说明问题,下面描述一下问题场景: 已知后端自定义的返回的Json数据结构如下: response: { "message": "返回成功", & ...
- 各种不同的mq
目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...
- linux/unix 段错误捕获_转
转自:linux/unix 段错误捕获[续] 本文为“在C/C++中捕获段错误,打印出错的具体位置”的续篇,进一步解决涉及动态链接库的情况. 背景知识: ·linux/unix下动态链接库的基本原 ...
- DataRowState、AcceptChanges、RejectChanges综合使用示例:实现DataGridView数据的增、删、改
下面的示例中,通过一个程序,演示使用DataRowState.AcceptChanges.RejectChanges,实现DataGridView数据的增.删.改. 一.界面设计 二.代码实现 usi ...
- 记一次坑爹的golang 二维map判断问题
记一次坑爹的golang 二维map判断问题 2018年10月18日 23:16:21 yinnnnnnn 阅读数:32更多 个人分类: golang 版权声明:本文为博主原创文章,未经博主允许不 ...
- 德国Aptamil不同系列奶粉间差别
以下内容均来源网络整理.汇总. 德国人做事严谨,而且对于有争议性的成分持保守态度,比如不添加麦芽糊精.所以我比较赞赏购买德国的奶粉,主要是aptamil和hipp喜宝,这两个牌子也基本没有负面新闻.但 ...
- am335x LCD背光问题
/**************************************************************** * am335x backlight problem * * 本问记 ...
- matlab下使用svmlib工具包
虽然网络上已经有了很多的类似的东西了吧.但是呢,我自己还是要写一写的. 安装: 对于 libsvm工具包,我们可以去官方网站下载,网址为:http://www.csie.ntu.edu.tw/~cjl ...
- e682. 获得打印页的尺寸
Note that (0, 0) of the Graphics object is at the top-left of the actual page, which is outside the ...