首页
社区
课程
招聘
[原创]以虚御虚-用虚拟机调试vt程式
发表于: 2011-5-30 14:45 30114

[原创]以虚御虚-用虚拟机调试vt程式

2011-5-30 14:45
30114

Intel vt技术十分诱人,但是如何调试vt程式却是让人头疼,让钱包心痛的问题,在走了各种弯路后,终于摸索出一套简单易懂又省钱的vt调试方法。如果你有比我更好的方法请第一个告诉我哟!!!

准备工作:
首先你需要安装以下程式:
1. vmware(版本6.0-7.1)
2. ida(不一定用得到)
3. windbg(也不一定用得到)
4. 自行编译一份带vt的bochs(版本2.4.1-2.4.6,2.4.1中vmx有些部分没实现推荐用2.4.5以上版本)

然后你需要安装一下操作系统,因为bochs装系统太慢,所以我们这里用vmware生成一个磁盘文件并安装好系统给bochs用。以后也能利用vmware把文件放入虚拟机中的硬盘。

创建虚拟机的关键步骤:



在选择创建硬盘的时候要选择“直接分配所有磁盘空间”

在创建后会有以下两个文件



其中xxx.vmdk比较小存储了硬盘描述信息,其中的信息之后会在bochs中用到。xxx-flat.vmdk为硬盘数据bochs也能使用。

在生成完后你需要安装一个操作系统,这里我使用的是xp sp3。

(注:在vmware安装操作系统的时候,尽量使用原版和纯净版减少神奇的意外发生。)

 

打开xxx.vmdk查看“# The Disk Data Base”这节

记录下以下信息:

ddb.geometry.cylinders = "8322"

ddb.geometry.heads = "16"

ddb.geometry.sectors = "63"

 

打开bochs将这些信息填入:



好了这样bochs和vmware就能共用一个磁盘文件了。

在设置完后启动bochs时也有一个地方需要注意:



因为vmware生成的磁盘文件的cylinders 不一定是512的倍数,bochs会因为这个问题而发出磁盘大小不匹配的警告,但其实是可以用的这里直接continue就行了。

完成准备工作后接下来你可以有两种选择(有钱人才有的选啊):

 

1.  你拥有ida5.7及以上版本且使用bochs2.4.5(或者你拥有ida5.5且使用bochs2.4.1)



直接使用ida中自带的bochs调试功能连接你编译好的bochs进行调试,轻松方便。(有钱真好,羡慕嫉妒恨啊!)

 

2.  想用bochs2.4.5但没有ida5.7或以上版本

使用windbg做为辅助进行调试,配合程式的com输出的信息,在bochs中下断点调试。



Windbg的设置和用vmware调试的时候完全一样,如果你以前设置过直接就可以用了。

 

一些符号和地址可以由windbg和com输出获得然后再bochs中下断点进行调试。虽然步骤比有ida的同学麻烦点,但是买ida的钱是省下来了。



上图为bochs中自带的调试界面,可以在这里下断点。



在命令行窗口可以看见系统退出vt的原因。

至此vt的调试环境就搭建好了,勇敢的少年啊快去调试vt!!!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 8
支持
分享
最新回复 (28)
雪    币: 287
活跃值: (583)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
谢谢楼主,收藏了
2011-5-30 15:26
0
雪    币: 985
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
收藏备用!
2011-5-30 15:45
0
雪    币: 985
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
收藏备用!
2011-5-30 15:44
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
多谢,收藏!
2011-5-30 16:31
0
雪    币: 4984
活跃值: (3330)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
弱弱的问一下,这个需要CPU支持硬件虚拟化吗
2011-5-30 20:21
0
雪    币: 475
活跃值: (64)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
bochs对真机是否带虚拟化没有要求,他的虚拟化支持是自己实现的。
我的真机环境为:
amd x64 7750
win7 sp1
2011-5-31 09:26
0
雪    币: 255
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哇···感谢楼主···收藏了···
2011-5-31 11:20
0
雪    币: 220
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
嗯  调试,总是有办法的事情。
2011-6-1 17:33
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
10
关于编译带VT的bochs:是设置BX_SUPPORT_VMX这一项吗?如果是那应该设置为几?另外我设置这一项后会有二个无法解析的外部符号:bx_cpu_c::init_VMCS(), vmcs_field_offset(),大家在编译的时候遇到了吗?
2011-6-2 16:14
0
雪    币: 822
活跃值: (380)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
11
我配置的是 #define BX_SUPPORT_VMX 1

bochos那个vs2008工程里面有些源文件没有加入项目里的
比如楼上同学的应该是缺vmx.cc,自己手动加入工程应该就好了
2011-6-2 16:37
0
雪    币: 475
活跃值: (64)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
我用的是2可以支持更多vmx的特性,其他地方我好像也改动过。
2011-6-2 17:14
0
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
13
谢谢楼主的研究,收藏待用
2011-6-2 17:28
0
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看看自己的信息
2011-6-2 17:43
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
15
果然是文件没有包含全,查找了一下是缺少vmcs.cc这个文件,把这个文件加进去就编译成功了。感谢楼上几位师兄帮忙!
另外再问一下:iso默认的磁盘参数是多少?用什么工具可以看?找了几个工具,甚至虚拟成光盘都没看到相关信息。
2011-6-3 11:03
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
16
郁闷了,编译通过了但是运行时会出错,就算什么都不改编译出来的程序在打开部分设备的设置时都出错,楼主能不能把你编译通过的源代码放出来?
2011-6-3 12:36
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
17
使用命令行nmake等待了十多分钟才编译成功,原来使用iso不需要设置磁盘参数,之前不知怎么搞的选了iso居然还需要设置磁盘参数。

问题:
1.在哪里可以看出已经启用了vt?
2.虚拟机运度太慢了,能不能优化?
2011-6-3 17:15
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
楼主果然无比强大,走在时代的最前沿,膜拜+学习……
2011-6-5 10:52
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
回大牛:
1. 可以在虚拟机中运行一个叫Securable的小程序,看看是不是开启了硬件虚拟化。
2. 因为是全模拟,所以性能比较差,可是这样能获得全部的控制权啊,这是我的理解。
2011-6-5 12:23
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
20
感谢楼上大牛解答!学习了
2011-6-5 14:34
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
21
建议  发个编译好的 源码版本
2011-6-5 22:40
0
雪    币: 217
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
22
扯那么远干嘛啊?
实机调试,IDT用系统的,单机都可以开发。
2011-6-8 10:31
0
雪    币: 349
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
调试VT和用VT技术调试程序,是一个概念么???不懂
2011-6-10 17:52
0
雪    币: 263
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
还有这个方法啊,早知道不用再配一台了。
2011-7-22 19:18
0
雪    币: 76
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
太不给力了,  我去试了试, 根本就启动不了, c0000017错误
2011-8-4 14:51
0
游客
登录 | 注册 方可回帖
返回
//