如何用OD的跟踪功能分析虚拟机保护
原文网址:https://www.52pojie.cn/thread-572327-1-1.html
新年,分享一份自己写的文章
虚拟机保护已经是现代保护壳不可缺少的一环,虽然逆向方也发展出各种插件帮助分析,但只针对特定某款,通用性的方法却不多见。我总在想,既然虚拟机的结构是固定的,如果有一款工具能够记录指令流,那么按图索骥,也许能发展出一套通用的分析方法来。其实OD就有记录指令流的功能,叫跟踪(trace),也许是效果不好或者操作不便,用的人甚至知道的人不多。先介绍下怎么用。 OD的跟踪功能原理很简单,就是每一步都自动下单步断点,然后记录断下来的指令信息。这项功能涉及到几项设置,第一项是缓存大小,不难想象,跟踪得到的这一些列的指令记录是需要占地方存储的,占多大可以设置,位置在调试选项(Debugging options)->跟踪(Trace),如图1。第一项就是缓存的大小,内存允许的话,自然是多多益善,毕竟 缓存越大,允许记录的信息越多。第二项是记录的内容,跟踪会自动记录地址模块等信息,此外可以选择是否记录指令、ESP和标志位的信息。设置位置紧接着缓存大小,见图2,可以按需勾选,本文只需要记录指令即可。最后一项是在调试(DEBUG)菜单中打开Trace。 现在Trace已经设置完毕了,按下Ctrl+F12,查看Trace窗口,应该已经开始记录执行过的指令。否则请检查前述设置和操作是否正确。 那么,虚拟机保护要怎么入手分析呢?前面我提到,虚拟机是有固定结构的,既然要分析,那对应的找到这些结构应该就可以了。传统保护虚拟机的结构其实很简单,大致可以看成一只章鱼,有三个部分,分别是init(头),Dispatch(身)和Handle(触须),如图3: Init主要完成虚拟机初始化工作,例如申请内存填写初始值之类,每次进入虚拟机,这个“头部”通常只执行一次。Dispatch是虚拟机的主体,可以看成一个主循环,它是每一条虚拟机指令的开始之处,也是结束之处,负责读取虚拟机指令,进入具体handle解释等工作。Handle就是虚拟机的“指令”了,实际完成各项虚拟机指令的功能。 我曾写过一篇《基于虚拟机的软件保护技术.》较为详细的介绍过虚拟机保护技术,对基本结构还不太熟的同学,此文会对上述概念有更详细的说明。 现在,我们就要在具体的软件中找这只“章鱼”了。以一个CrackMe为例,首先清理所有断点,打开Trace,Ctrl+F12跟踪步过运行,看到程序跑起来了,F12暂停,看Trace的窗口如下(图4): 记录是从下往上看的,可以看出,在程序空间的最后一条支流,是00401534的一个call,调用了DialogBoxInDirectParamA,这是一个调出系统对话框的API,其中有一个参数DlgProc用来指明消息回调函数的位置,我们直接在反汇编窗口查看这个API,发现回调函数是0x401572(图5): 0x401572处代码不长,有好几条Call,但大部分都是系统Call,只有一处调用了程序空间的函数,这个函数就是虚拟机的入口。到这里,我们对虚拟机的分析的工作才刚刚开始。 首先对虚拟机的入口下断,然后重新运行程序。目的是保证能够正确找到init。现在应该端在虚拟机的入口处,如下图: 这是个非常简单的虚拟机,有经验的同学也许可以一眼就看出来图6包含了Init和Dispatch分别在哪里。当然也可以用Trace快速找出虚拟机的各个结构。现在去掉断点,打开Trace,Ctrl+F12跟踪步过,这时程序会跑起来,多点击几下按钮,目的是让主要分支得到更充分的执行(即增加获得执行的次数),然后F12暂停。 回到Trace窗口,对着任意一行程序空间的指令点击右键,选择模块统计,结果如下图: 统计是以代码段来划分的,第一栏显示的是这段代码在刚才的跟踪执行中执行的次数,第二栏显示了某个代码段的首地址。我们先找执行了一次的指令首地址。可以找到第5行的地址就是虚拟机的入口地址,点击在反汇编窗口跟随,可以看到这段代码是从0x00401060到0x004010B9,这就是init: [Asm] 纯文本查看 复制代码 ?
接着找Dispatch,刚才说过,它既是虚拟机指令的开始,又是结束,它得到的执行次数一定也最多。可以看到第三行的0x004010B9,这个地址在虚拟机入口地址之后,执行次数最多,同样的办法可以看到这段代码的终止位置是0x004010D9: [Asm] 纯文本查看 复制代码 ?
最后是找这次执行虚拟机用到的handle。这个不难,虚拟机入口地址之后的代码段除了init和dispatch,其它都是handle,所有执行过的handle都会在里面出现。当然了,某条handle的具体作用,以及没有执行过的handle,就只能靠人肉分析了。还有就是,就分析虚拟机保护来说,了解执行了哪些handle,以及哪些handle更常用,这些信息都是十分有用的。 OK,把内容直接贴出来了,顺求一个新精华{:1_930:} |
如何用OD的跟踪功能分析虚拟机保护.doc
113.55 KB, 下载次数: 174, 下载积分: 吾爱币 -1 CB
内容和po出来的完全一样,愿意捐的就赞助点呗
vmcrackme.zip
1.92 KB, 下载次数: 135, 下载积分: 吾爱币 -1 CB
所有权归老K所有
如何用OD的跟踪功能分析虚拟机保护相关推荐
- 【分享】VMProtect使用技巧汇集__最好的虚拟机保护软件之一
2019独角兽企业重金招聘Python工程师标准>>> VMProtect是目前最强大的虚拟机保护软件之一,适合Visual Basic(native),Visual C,Delph ...
- VMProtect使用技巧汇集__最好的虚拟机保护软件之一
VMProtect 官方站点: http://www.vmprotect.ru 作 者:PolyTech (俄国) VMProtect是目前最强大的虚拟机保护软件之一,适合Visual Bas ...
- 关于如何用od反汇编win32 控制台程序
*********************************************************** 如何用od反汇编win32 控制台程序(类似dos程序)呢? ********* ...
- [虚拟机保护] [原创]关于滴水的VT调试器
关于滴水的VT调试器 by 海风月影 论坛上今天吵的比较火热,主要是关于滴水的VT调试器,很多人不了解这个东西,我对Intel的VT技术略有了解,所以我来简单的介绍一下. 第一,什么是VT技术 VT是 ...
- phpStorm如何用FTP,SSH连接到虚拟机linux系统?
功能介绍:如何用phpstorm连接到虚拟机上的linux上,实现实时开发同步开发. 1.打开phpstorm选择:Tools->Deployment->configruation : 2 ...
- 新春思考:如何用区块链与投证保护“一杯严选”「见茶卸甲」级好茶
Ai&Hi资讯:TokenRise投证生态将联合"鲸确"精确资产管理与4COO全球运营官安全网络支持TEAx世界正茶链盟,保护那些令人心动的好茶. 猪年新春,应" ...
- 基础:如何用OD找到Hello World的main函数
首先从百度上下载一个Hello World的文件,如下图所示.当然,你也可以自己使用vc6.0或vc2012自己写一个Hello World的文件,至于怎么写我就不详细描述了,不会的可以自己百度,很简 ...
- unity如何实现图片透视_如何用nginx实现防盗链?保护网站图片、视频。
什么是防盗链? 有时候,当我们在网站上浏览图片时会遇到图片打不开,并看到提示:"403权限禁止".这可能是正在浏览的这个网站用到的图片在盗用别的网站图片,而被盗用的网站采用了防盗链 ...
- 受保护的Hyper-V环境和受保护的虚拟机
无论是企业内部还是托管在IDC或云服务商的虚拟机,如何保障运行的环境是安全的,虚拟机是安全的(虚拟机文件里的数据以及看到的监视器画面)成为此篇文章和大家探讨研究的. 比如您正在运行的虚拟机,管理员是可 ...
- 纯手工秒杀VM,SE等虚拟机Handle
/************************************** /* 作者:半斤八兩 /* 博客:http://cnblogs.com/bjblcracked /* 日期:2014-1 ...
最新文章
- Linux 文件的权限
- MySQL性能优化的21个最佳实践
- node-serialport —— Node.js 串口数据读写包
- windown下linux子系统的安装和卸载
- HTML中href src区别,html中 href 和 src 的定义与区别
- 现在就启用 HTTPS,免费的!
- [mybatis]动态sql_if_where_trim判断OGNL
- 恐龙快跑小程序对接流量主源码+前端 v5.0.4 全开源微擎框架
- 泵车砼活塞故障预警-冠军方案
- dockhub 好用的镜像_玩转docker镜像和镜像构建
- 使用vs2008搭建php扩展环境
- bzoj4006 [JLOI2015]管道连接
- downie是什么软件?如何在Mac中下载视频?
- CXF学习(1)——CXF框架
- this.FileUpload1.PostedFile.File…
- JavaScript统计图表插件 Echarts
- MySQL之按日期查询表数据
- 为表的添加中文属性时出现的Incorrect string value: '\xE7\x9A\x84\xE6\xB1\xEA...
- ubuntu 14.04 搜狗拼音安装
- 2013年5月上海乌镇游
热门文章
- 人机交互技术:利用声波识别手势 Gesture Control System Uses Sound Alone
- 只用一招!Python实现微信防撤回!
- 使用slickedit代替sourceinsight
- wps word文档生成目录的时候显示断裂会生成大纲怎么办_橙瓜码字小说自动生成器,对话描写,景物描写,外貌描写自动生成...
- sklearn安装包下载
- 树莓派制作语音对话机器人
- JDK8与JDK11
- 安卓计步器是如何实现计步的
- texlive for win10宏包更新
- Could not find a version that satisfies the requirement tensorflow