V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wafm
V2EX  ›  编程

关于虚拟机!有大侠帮忙吗

  •  
  •   wafm · 2016-06-09 01:11:38 +08:00 · 3446 次点击
    这是一个创建于 3091 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的淘宝的虚拟机非常厉害啊

    号称

    深度去除 Vm 标示 硬盘 ID 注册表 硬件信息虚拟化 系统内核底层修改

    请问有什么办法对抗呢,,由于防止程序单机被多开..

    程序不想在虚拟机下被运行.

    以下是目前我已知的处理办法

    1.遍历注册表

    2.遍历的虚拟机进程

    3.遍历虚拟机驱动文件

    4.检测 MAC 特征

    5.检测虚拟机虚拟硬件特征.

    以上办法均有办法破解,,所以求赐教...

    10 条回复    2016-06-10 13:15:29 +08:00
    pimin
        1
    pimin  
       2016-06-09 04:44:30 +08:00 via Android
    1.自己不专业的事情交给别人去做
    比如 ASProtect 有 anti-vm 模式,如果他能绕过那你自己做的方案更不用说了。
    2.单机改为单用户
    用户每次登陆都连接服务器,产生 session ,如果重新登陆则 session 更新,之前登陆全部无效。
    3.水至清则无鱼
    以上手段都用了,还能被绕过,那这部分人就不是你的目标客户,心态摆好
    yyfearth
        2
    yyfearth  
       2016-06-09 09:54:15 +08:00
    我想说的 LS 已经说的很好了
    首先就是看你的应用目的是什么 我觉得一般情况下不需要通过禁用虚拟机来做到 除非你的应用本身就对虚拟机不够兼容

    然后 大多数情况下 防止多开用“单用户单 Session ”就可以做到
    或者允许 PC 端一个 Session 移动端另外一个 Session 但是每种类型只能有一个 Session 来做

    防止多开而禁用虚拟机这个思路本身就是不正确的
    这样还禁止了合法的不多开的虚拟机用户 比如在 Mac 上用虚拟机运行 Windows 的用户

    反过来讲 为什么要防止程序“单机”被多开
    如果我有很多台物理机实现多开 是不是允许的?
    RemRain
        3
    RemRain  
       2016-06-09 09:56:39 +08:00   ❤️ 2
    要防多开的,想必是游戏吧。可以想像,大多数游戏启动后,尝试创建互斥体、通过各种方法检测虚拟机,然后报错退出,都是纯客户端检测,属于古老的防多开技术。实际所有 debugger/cracker 不怕开发者技术硬,就怕开发者脑洞大, LZ 不妨试下这么做:

    1. 假装自己很弱:启动时只做很少的检测,比如只检测硬件特征,然后报错退出。这样对付小白足够了,高手则会小看你。

    2. 猥琐地收集数据:运行一段时间后,动用你所能想到的所有办法,获取所有特征数据,比如注册表、 MAC 特征、硬盘信息等,加密后待提交。注意一定要隐蔽,可以由计时器、操作系统消息、游戏中不常用的功能等触发,而且不要一次性获取所有数据,每个事件触发时只获取几项,存在不同的地方。
    即使是专家, debug 这样的程序也会觉得日了狗了,毕竟,谁能想到先喝两个红瓶、再打开技能窗口居然有 50% 的概率在 23 秒后触发驱动检测呢

    3. 分步提交:和收集数据一样,提交这些数据也要猥琐,可以随心跳包、战斗数据等每次提交一部分

    4. 服务端策略检测:数据一旦到了服务端,检测手段就很多了,而且随时可变,防不胜防。比如判断运行系统的硬盘空间小于 50G ,且没有 E 盘 F 盘,就是虚拟机;比如同一 IP 连过来好几个帐号,并且每个帐号登录时间差不了几分钟,就认为是多开;又比如有几个帐号总是在固定的几个设备上来回登录,而且总是同时在线,就说明是多开等

    5. 多开惩罚:如果服务端检测出多开,就直接把对方踢下线的话,前面的努力都白费了。正确的做法是过一段时间后,进行人品惩罚,比如总是打出很烂的装备、打怪很难暴击、合成装备老失败等。切记不要一检测出来就立即惩罚,防止对方对客户端最近提交的数据包产生怀疑。而且一旦惩罚开始,可以持续进行数个小时,即使改成单开也接着惩罚。

    这么一套连击下来,多开者会发现,一旦帐号多开了, RP 会急剧下降,而且根本不是调试或者虚拟机能解决的
    turan12
        4
    turan12  
       2016-06-09 11:22:52 +08:00 via Android
    @RemRain 这个方法简直绝了!
    zingl
        5
    zingl  
       2016-06-09 13:57:22 +08:00
    你的程序占满 CPU 和内存,他就没法多开了

    或者,去开发主机游戏就没这个问题了
    wafm
        6
    wafm  
    OP
       2016-06-09 19:39:32 +08:00
    @yyfearth 这边做的策略的确是这样 如果你有多台物理机 那么我就不管你
    wafm
        7
    wafm  
    OP
       2016-06-09 19:39:48 +08:00
    @pimin 感谢 已经作参考,
    wafm
        8
    wafm  
    OP
       2016-06-09 19:40:48 +08:00
    @RemRain 哈哈 这样子感觉我是在作恶啊..
    wafm
        9
    wafm  
    OP
       2016-06-09 19:44:08 +08:00
    @pimin 貌似所有保护程序 ANTI-VM 都是检测 CPU 指令. 但是如果 CPU 支持 VT 当虚拟机开启 VT,这些特征将不复存在
    wafm
        10
    wafm  
    OP
       2016-06-10 13:15:29 +08:00
    @pimin 昨天研究了单 Session 发现也是行不通,,他注册多帐号 其实道理也一样 在虚拟机里 运行 还是合法的 Session
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3887 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:30 · PVG 18:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.