能力值:
( LV2,RANK:10 )
|
-
-
26 楼
最烦这样的活动 常来看雪打广告卖书 又不给些实惠 买了几本书撒屁优惠活动也没 去TMD的
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
china-pub会员75折
|
能力值:
( LV9,RANK:250 )
|
-
-
28 楼
虚拟技术 一种潮流了啊
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
我和虚拟机的故事:
今天看到这个活动,想起来以前虚拟机方面的一个小事情,事情过去好久了,当时知道的人也很多,现在说出来,也算是对以前朋友们的一个回忆吧,相信也不会得罪谁。
那时候刚毕业,在某地方跟某团队做WG,老大dox很牛,虽然人家平时不常跟我们接触,不过大家都很尊敬他,倒也谈不上佩服,真正佩服还是经过那次虚拟机事件。
话说当时做某游戏外挂,人家反外挂忽然上了种新技术,加密代码动态发下来,并且每次都要变化一些小内容。这个问题虽然没见过,但也不算啥无法处理的事情,顶多就是我们把人家发下来的代码也执行一下嘛。不过老大dox说不行,说这个事情最好不要执行人家代码了,还是他写个虚拟机来虚拟执行吧,并且他说一个周他就能写好了。我嘴上不说啥,不过心想这种虚拟执行代码的,你要反汇编代码,又要去解析执行,别说一个周,一个月你能搞好就不错了。
结果这大哥一个周后来看我们,竟然真把他说的虚拟机给拿来了,可以完整解释接收到的代码,并且执行。大家都比较佩服,心想挺牛的。原以为这个事情就这么过去了,没想到这只是事情的开始。
没过多久,大家改做另外一个游戏WG了,这游戏运作公司比较牛,反WG也很牛。开始还没觉得怎么,慢慢人家官方开始反击了,先是发下来代码执行,刚好用到我上面说的那个虚拟机系统,对接受到的加密代码进行反汇编、解析指令、在虚拟环境执行、得到最终结果。再往后人家加大力度,代码开始变换了,加上了多态引擎、重定位、搜索恶意程序特征码等,这些倒还好对付,在不断对抗中很多小WG很快死掉了,就剩下我们跟另外一家了。为了干掉我们这最后的2家,游戏加密代码强度也变换比较严重了,开始上int3异常处理等反调试、防虚拟机。我看到后心里有些虚了,因为int3太多,我不得已写了个脚本对其进行处理(那时候还不会用补丁处理OD),但这对虚拟机产生骚扰了,因为虚拟机只解析常见的x86代码并加以执行,根本不能处理windows相关东西。
事情很快反映到老大dox那边,他看了下说,无所谓嘛,我加上对int3和SEH的异常处理支持就行了。果然一个晚上事情就搞定了,虽然如此,但我知道这以后的事情肯定还会很多,看来事情复杂了。
果然,更新没2天,人家下发的代码就多了很多反调试和反虚拟机的东西,比如检查内存环境,如果虚拟机模拟的不对就被查出来了;下发api进行执行,因为虚拟机不太好执行api;利用获取时间的汇编指令判断执行时间等等很多。dox老大把这些一一搞定,每次更新他就自己一个人写代码,也不问别人,也不上网(貌似牛人工作很喜欢断网,据说是防止上网分心)。
再往后他写的虚拟机我觉得就和windows结合的比较紧密了,之所以说紧密,是因为他把系统大部分东西都模拟下来了,多线程就不用说了,甚至直接把一个加壳的exe扔进去和游戏运行进行配合。虽然这事情比较超出我的理解,但从下午开始写,到最终搞定,也就是4、5个小时的事情。听起来比较令人膜拜,不过也可能是我孤陋寡闻吧。
这些经历使我们大家增长了见识,学会了很多。
|
能力值:
( LV8,RANK:130 )
|
-
-
30 楼
好书呀,一定要看
|
能力值:
( LV2,RANK:16 )
|
-
-
31 楼
不是太理解,但是喜欢啃书得感觉。支持
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
真是个猛男啊
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
现在还没有那个水平,看不明白那本书,唉
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
看不懂,不禁生出对牛人的仰视之感!...
什么时候才能跟上技术的脚步啊。。。。
|
能力值:
( LV6,RANK:90 )
|
-
-
35 楼
膜拜前面的那个老大
希望机工的纸张别像邮电那么差
顺便说下,china-pub上价格有点贵,比较影印版就知道了
当当好像最便宜,不过还没中文版的
|
能力值:
( LV6,RANK:90 )
|
-
-
36 楼
听说这本书很好,不知道翻译质量如何,但愿。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
我对现在的系统还没搞明白,如果在不重新换机的情况下能弄个虚拟机大胆的玩玩倒也不错,就是不知道要求最小配置应是多大?
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
呵呵,不怎么会在虚拟机中设置X-windows.
|
能力值:
( LV7,RANK:100 )
|
-
-
39 楼
我要编译原理!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
china-pub会员75折 可惜这里是看血
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
最近在看《计算系统虚拟化--原理与运用》,有空也找下这本新书比较下。
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
这个老大好猛
|
能力值:
( LV3,RANK:20 )
|
-
-
43 楼
楼主最好能给看雪里的兄弟们一个好的折扣,这样买的人也多。毕竟看雪不是一个专门的虚拟机论坛,关注的人比较少。
不过我是想买一本。
|
能力值:
( LV3,RANK:20 )
|
-
-
44 楼
我在chinapub的用户名给忘了,怎么能找回来
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
哪个科学家不写书的啊,像牛顿他们都写过呢!只有赚钱赚的没空的人才不出书!
|
能力值:
( 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);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
我也参加,最近正好在学写VM,正缺一本权威资料,70块大洋对于我等穷学生不是小数目,要是有幸能得最佳分享奖就好了
分享我的VM故事:我与VM的三类接触,另开的帖子:
http://bbs.pediy.com/showthread.php?t=84360
|
能力值:
( LV3,RANK:20 )
|
-
-
48 楼
楼主,我从chinapub买了一本,昨天收到。今天打开一看,发现缺少243-258一共16页。质量太差了,这样搞的话,以后论坛推荐的书,谁还敢买?
|
能力值:
( LV2,RANK:10 )
|
-
-
49 楼
虚拟机 不错 可惜我古董电脑 暂时奔不起
|
能力值:
( 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指令中循环的切换中.
以上只是本人的一些肤浅的认识,如果有不对之处,,请各位大牛不吝赐教.....
|
|
|