能力值:
( LV4,RANK:50 )
|
-
-
2 楼
rdtsc
mov edi,eax ;将第一次的结果保存起来
rdtsc
sub eax,edi ;向减得到“间隔周期数”
其余代码有点多余
|
能力值:
( LV13,RANK:970 )
|
-
-
3 楼
这样检测VM,除了可能误报,别的好处不大阿。人家把rdtsc的结果给你改了你不就判断不出来了么。万一谁的机器跑的慢,你把人家当成了虚拟机那咋办。
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
不会跑的太慢的
我还没看到过真实机器会大于50h的
当然我也说啦
需要考虑线程转换
所以我感觉误报因该不会 至于说别人修改rdtsc的结果
那就要看你如何利用拉
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
最初由 girl 发布 rdtsc mov edi,eax ;将第一次的结果保存起来 rdtsc sub eax,edi ;向减得到“间隔周期数”
........
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
肯定不可靠的,会误判太多。
速度特慢的,会判断为VM.很多CPU的主频都可以调节的。
速度特快的,本来有VM会判断没有VM.你想一想,未来CPU速度日新月异,双核CPU等你能保证那个值是临界值?
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
但至少现在速度慢的好像也没有eax大于200h的
双核CPU只会eax小吧
我顶多去掉eax<10h这个
在虚拟机里eax的稳定值一般都是几百单位
即使以后个人机器速度很快,vm里面这个值应该也不会很低吧
你可以找cpu好的服务器看看
个人认为现在这个的检测产生误判的可能性几乎为0
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
你这个方法不行,最根本一点没有告诉你,既然在VM下,那么rdtsc这个指令也不是真的执行,而是通过VM执行,那么这个返回值可靠吗?你自己想。
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
不可靠,但你可以测试就知道啦
VM里也有个稳定值
另外VM里通常会出现很不规则的东西
真实机器就很稳定
这也就是我为啥说考虑线程的原因
你找稳定值就可以拉
所以说 这个方法目前是可靠的
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
如果是在程序中间随机检测
稍微修改下代码 防止线程中断 找个稳定值
就基本做到100%检测出vpc和VM
|
能力值:
( LV4,RANK:50 )
|
-
-
11 楼
PD820上值是69。误报为VM
|
能力值:
( LV6,RANK:90 )
|
-
-
12 楼
p4 2.66G 64bit
windows 2003 en 64bit
误报VM
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
检测这么复杂。
|
能力值:
( LV3,RANK:20 )
|
-
-
14 楼
郁闷啦
双核PD820竟然出现69
楼上的rufus 可以说下你的 p4 2.66G 64bit 下的的值是?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
楼主好像有点孤芳自赏?听不进别人的意见。“基本做到100%”?既然100%,怎么还是基本?那应该是完全做到了!
别学用RDTSC来检测VM,就是正常运行都可能出问题,为何?
看代码:
rdtsc
mov edi,eax
rdtsc
sub eax,edi
如果在执行到mov edi,eax后,CPU进行时间片切换(可能是进程切换也可能是线程
切换),那么再执行rdtsc后的差值都会表较大。
|
能力值:
( LV6,RANK:90 )
|
-
-
16 楼
最初由 icyfox 发布 郁闷啦 双核PD820竟然出现69 楼上的rufus 可以说下你的 p4 2.66G 64bit 下的的值是?
好像也是69
|
能力值:
( LV3,RANK:20 )
|
-
-
17 楼
gkend 你好,谢谢批评!
我前面也说过 需要考虑线程切换,判断的方法也很简单
基本上两三次eax的值比较就可以得到cpu时间片没切换的值
我说的基本上100% 是因为我确实没见过很好的CPU,
我在自己用的时候eax的值是设置在小于200h属于真实机器
因为找人测试 没有发现大于50h和小于10h的,所以发贴的时候临时改变了下判断条件,也许你认为RDTSC来检测VM 不可以,我在发贴前
也找过判断VM的方法,没有通用的,所以 才自己感觉这个可以后 发
了出来
也是希望大家可以讨论,指出不足
另外VM里 eax的取值相比真实机器里 取值会比较杂乱
以让说的不对的 还请大家继续讨论
另外如果有网友有条件测试比较好的多CPU机器
麻烦帮忙测试下 看看eax的值
|
能力值:
( LV6,RANK:90 )
|
-
-
18 楼
最初由 icyfox 发布 郁闷啦 双核PD820竟然出现69 楼上的rufus 可以说下你的 p4 2.66G 64bit 下的的值是?
我今天又试了一下,竟然又不误报了.不明白
64 00 00 00
|
能力值:
( LV3,RANK:20 )
|
-
-
19 楼
rufus
因为我调整了 eax的值
|
能力值:
( LV1,RANK:0 )
|
-
-
20 楼
学习
|
|
|