首页
社区
课程
招聘
[推荐]《虚拟机:系统与进程的通用平台》活动-- 有奖品
发表于: 2009-3-4 15:59 56219

[推荐]《虚拟机:系统与进程的通用平台》活动-- 有奖品

2009-3-4 15:59
56219
收藏
免费 0
支持
分享
最新回复 (72)
雪    币: 10635
活跃值: (2329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
最烦这样的活动 常来看雪打广告卖书  又不给些实惠  买了几本书撒屁优惠活动也没  去TMD的
2009-3-18 12:35
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
china-pub会员75折
2009-3-18 12:43
0
雪    币: 360
活跃值: (77)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
28
虚拟技术 一种潮流了啊
2009-3-18 13:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
upm
29
我和虚拟机的故事:

今天看到这个活动,想起来以前虚拟机方面的一个小事情,事情过去好久了,当时知道的人也很多,现在说出来,也算是对以前朋友们的一个回忆吧,相信也不会得罪谁。

那时候刚毕业,在某地方跟某团队做WG,老大dox很牛,虽然人家平时不常跟我们接触,不过大家都很尊敬他,倒也谈不上佩服,真正佩服还是经过那次虚拟机事件。

话说当时做某游戏外挂,人家反外挂忽然上了种新技术,加密代码动态发下来,并且每次都要变化一些小内容。这个问题虽然没见过,但也不算啥无法处理的事情,顶多就是我们把人家发下来的代码也执行一下嘛。不过老大dox说不行,说这个事情最好不要执行人家代码了,还是他写个虚拟机来虚拟执行吧,并且他说一个周他就能写好了。我嘴上不说啥,不过心想这种虚拟执行代码的,你要反汇编代码,又要去解析执行,别说一个周,一个月你能搞好就不错了。

结果这大哥一个周后来看我们,竟然真把他说的虚拟机给拿来了,可以完整解释接收到的代码,并且执行。大家都比较佩服,心想挺牛的。原以为这个事情就这么过去了,没想到这只是事情的开始。

没过多久,大家改做另外一个游戏WG了,这游戏运作公司比较牛,反WG也很牛。开始还没觉得怎么,慢慢人家官方开始反击了,先是发下来代码执行,刚好用到我上面说的那个虚拟机系统,对接受到的加密代码进行反汇编、解析指令、在虚拟环境执行、得到最终结果。再往后人家加大力度,代码开始变换了,加上了多态引擎、重定位、搜索恶意程序特征码等,这些倒还好对付,在不断对抗中很多小WG很快死掉了,就剩下我们跟另外一家了。为了干掉我们这最后的2家,游戏加密代码强度也变换比较严重了,开始上int3异常处理等反调试、防虚拟机。我看到后心里有些虚了,因为int3太多,我不得已写了个脚本对其进行处理(那时候还不会用补丁处理OD),但这对虚拟机产生骚扰了,因为虚拟机只解析常见的x86代码并加以执行,根本不能处理windows相关东西。

事情很快反映到老大dox那边,他看了下说,无所谓嘛,我加上对int3和SEH的异常处理支持就行了。果然一个晚上事情就搞定了,虽然如此,但我知道这以后的事情肯定还会很多,看来事情复杂了。

果然,更新没2天,人家下发的代码就多了很多反调试和反虚拟机的东西,比如检查内存环境,如果虚拟机模拟的不对就被查出来了;下发api进行执行,因为虚拟机不太好执行api;利用获取时间的汇编指令判断执行时间等等很多。dox老大把这些一一搞定,每次更新他就自己一个人写代码,也不问别人,也不上网(貌似牛人工作很喜欢断网,据说是防止上网分心)。

再往后他写的虚拟机我觉得就和windows结合的比较紧密了,之所以说紧密,是因为他把系统大部分东西都模拟下来了,多线程就不用说了,甚至直接把一个加壳的exe扔进去和游戏运行进行配合。虽然这事情比较超出我的理解,但从下午开始写,到最终搞定,也就是4、5个小时的事情。听起来比较令人膜拜,不过也可能是我孤陋寡闻吧。

这些经历使我们大家增长了见识,学会了很多。
2009-3-18 14:35
0
雪    币: 479
活跃值: (25)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
30
好书呀,一定要看
2009-3-18 19:33
0
雪    币: 558
活跃值: (46)
能力值: ( LV2,RANK:16 )
在线值:
发帖
回帖
粉丝
31
不是太理解,但是喜欢啃书得感觉。支持
2009-3-19 02:16
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
真是个猛男啊
2009-3-19 13:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
现在还没有那个水平,看不明白那本书,唉
2009-3-19 17:13
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
看不懂,不禁生出对牛人的仰视之感!...
什么时候才能跟上技术的脚步啊。。。。
2009-3-19 17:51
0
雪    币: 193
活跃值: (1404)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
35
膜拜前面的那个老大
希望机工的纸张别像邮电那么差
顺便说下,china-pub上价格有点贵,比较影印版就知道了
当当好像最便宜,不过还没中文版的
2009-3-19 19:50
0
雪    币: 122
活跃值: (68)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
36
听说这本书很好,不知道翻译质量如何,但愿。。。。
2009-3-19 20:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
我对现在的系统还没搞明白,如果在不重新换机的情况下能弄个虚拟机大胆的玩玩倒也不错,就是不知道要求最小配置应是多大?
2009-3-19 23:53
0
雪    币: 238
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
呵呵,不怎么会在虚拟机中设置X-windows.
2009-3-20 09:24
0
雪    币: 247
活跃值: (10)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
39
我要编译原理!!!
2009-3-20 09:39
0
雪    币: 10635
活跃值: (2329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
china-pub会员75折  可惜这里是看血
2009-3-20 09:48
0
雪    币: 1407
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
最近在看《计算系统虚拟化--原理与运用》,有空也找下这本新书比较下。
2009-3-20 13:51
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
这个老大好猛
2009-3-20 18:15
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
43
楼主最好能给看雪里的兄弟们一个好的折扣,这样买的人也多。毕竟看雪不是一个专门的虚拟机论坛,关注的人比较少。
不过我是想买一本。
2009-3-22 13:28
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
44
我在chinapub的用户名给忘了,怎么能找回来
2009-3-22 14:51
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
哪个科学家不写书的啊,像牛顿他们都写过呢!只有赚钱赚的没空的人才不出书!
2009-3-23 18:12
0
雪    币: 581
活跃值: (149)
能力值: ( LV12,RANK:600 )
在线值:
发帖
回帖
粉丝
46
帖段检测VMWARE的代码...不知道还能用否..很老了

    #include "stdio.h"
#include <windows.h>

char* vm_string[2]={"NOT Running On vmware","Running On vmware"};
#define SET_REG(regt,reg) *((unsigned int *)&((regt).reg))

typedef struct _reg_info {
UCHAR eax[4];
UCHAR ebx[4];
UCHAR ecx[4];
UCHAR edx[4];
UCHAR ebp[4];
UCHAR edi[4];
UCHAR esi[4];
}reg_info;

__declspec(naked) void vm_k(reg_info *reg)
{
__asm mov eax, 4[esp]
__asm pushad     
__asm push eax     
__asm mov esi, 18h[eax]   
__asm mov edi, 14h[eax]   
__asm mov ebp, 10h[eax]   
__asm mov edx, 0ch[eax]   
__asm mov ecx, 08h[eax]   
__asm mov ebx, 04h[eax]   
__asm mov eax, 00h[eax]   
__asm in eax, dx
__asm xchg 00h[esp], eax  
__asm mov 18h[eax], esi   
__asm mov 14h[eax], edi   
__asm mov 10h[eax], ebp   
__asm mov 0ch[eax], edx   
__asm mov 08h[eax], ecx   
__asm mov 04h[eax], ebx   
__asm pop dword ptr 00h[eax]
__asm popad      
__asm ret      
}

BOOLEAN is_vmware()
{
reg_info reg = {0};

SET_REG(reg,eax) = 0x564D5868UL;
SET_REG(reg,ebx) = ~0x564D5868UL;
// SET_REG(reg,ecx) = 0x0a;
SET_REG(reg,edx) = 0x5658;

__try
{
   vm_k(®);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{

}
if (SET_REG(reg,ebx) != 0x564D5868UL)
{
   return FALSE;
}

return TRUE;

}

void main()
{
MessageBox(NULL,vm_string[is_vmware()],"VMWARE",MB_OK);

}
2009-3-24 11:55
0
雪    币: 11
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
我也参加,最近正好在学写VM,正缺一本权威资料,70块大洋对于我等穷学生不是小数目,要是有幸能得最佳分享奖就好了

分享我的VM故事:我与VM的三类接触,另开的帖子:

http://bbs.pediy.com/showthread.php?t=84360
2009-3-24 12:12
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
48
楼主,我从chinapub买了一本,昨天收到。今天打开一看,发现缺少243-258一共16页。质量太差了,这样搞的话,以后论坛推荐的书,谁还敢买?
2009-3-27 14:15
0
雪    币: 4214
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
虚拟机 不错  可惜我古董电脑 暂时奔不起
2009-3-27 14:17
0
雪    币: 564
活跃值: (42)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
50
看虚拟机时的学习笔记
vmm实现思路
   为了提高虚拟机异常,中断等事件的处理效率,性能,隔离等问题,intel提出了硬件支持实现虚拟的vt-x设计.该设计提出了两种模式:根模式与非根模式.
   根模式留给vmm使用,非根模式留给虚拟机中的操作系统使用.
   
   那么什么是vmm呢?vmm是一个软件层,叫虚拟管理器,它主要负责对硬件,比如cpu处理器,显卡等的虚拟.
   那么实现vmm的难点在哪里呢?其实就在上面两种模式状态的切换中,即根模式与非根模式的切换.那么是什么来管理这两种模式切换时的状态参数呢?是堆栈,寄存器?其实都不是,这里用到了一个数据结构,该数据结构叫虚拟机控制结构(vmcs),vmcs包括了客户状态区,主机状态区,用来保存虚拟机以及主机的各种参数状态,并且提供了vm entry与vm exit两种操作在虚拟机与vmm之间切换,用户可以在vmcs的vm_execution control fields里面设置在执行什么指令的时候就执行vm exit,在什么时候执行vm entry,如io操作,中断异常等使控制权交还vmm.vmm一旦搭建起这个平台,那么接下来的事情就由硬件去处理了.
  
   我们已经对vmm有了一点点印象,那么以下就是vmm实现的一些步骤.
  1 检查处理器是否支持硬件虚拟特性.这里需要检查相关的msr寄存器的虚拟特性位,设置cr4中的vmxe位.
  2 初始化vmcs结构.包括申请4kb的存取区,初始化虚拟机操作系统的初始状态,填充vm exit退出的条件,填充各重要的Bit位.
  3 cpu触发vm entry事件的设置.
  那么这样虚拟机的两种模式就在vm exit和vm entry指令中循环的切换中.
  以上只是本人的一些肤浅的认识,如果有不对之处,,请各位大牛不吝赐教.....
2009-3-27 15:26
0
游客
登录 | 注册 方可回帖
返回
//