现在的淘宝的虚拟机非常厉害啊
号称
深度去除 Vm 标示 硬盘 ID 注册表 硬件信息虚拟化 系统内核底层修改
请问有什么办法对抗呢,,由于防止程序单机被多开..
程序不想在虚拟机下被运行.
以下是目前我已知的处理办法
1.遍历注册表
2.遍历的虚拟机进程
3.遍历虚拟机驱动文件
4.检测 MAC 特征
5.检测虚拟机虚拟硬件特征.
以上办法均有办法破解,,所以求赐教...
1
pimin 2016-06-09 04:44:30 +08:00 via Android
1.自己不专业的事情交给别人去做
比如 ASProtect 有 anti-vm 模式,如果他能绕过那你自己做的方案更不用说了。 2.单机改为单用户 用户每次登陆都连接服务器,产生 session ,如果重新登陆则 session 更新,之前登陆全部无效。 3.水至清则无鱼 以上手段都用了,还能被绕过,那这部分人就不是你的目标客户,心态摆好 |
2
yyfearth 2016-06-09 09:54:15 +08:00
我想说的 LS 已经说的很好了
首先就是看你的应用目的是什么 我觉得一般情况下不需要通过禁用虚拟机来做到 除非你的应用本身就对虚拟机不够兼容 然后 大多数情况下 防止多开用“单用户单 Session ”就可以做到 或者允许 PC 端一个 Session 移动端另外一个 Session 但是每种类型只能有一个 Session 来做 防止多开而禁用虚拟机这个思路本身就是不正确的 这样还禁止了合法的不多开的虚拟机用户 比如在 Mac 上用虚拟机运行 Windows 的用户 反过来讲 为什么要防止程序“单机”被多开 如果我有很多台物理机实现多开 是不是允许的? |
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 会急剧下降,而且根本不是调试或者虚拟机能解决的 |
5
zingl 2016-06-09 13:57:22 +08:00
你的程序占满 CPU 和内存,他就没法多开了
或者,去开发主机游戏就没这个问题了 |