某游戏登陆器过VM虚拟机检测方式

查看 55|回复 9
作者:折纸   

[color=]声明

    本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!若有侵权,请联系作者删除。
准备工具
    查壳工具:PEiD.exe
    调试工具:x32dbg.exe
前言
    最近在VMware虚拟机环境下打开某游戏登陆器时,程序弹出提示禁止在虚拟机环境下使用。但是作者怕电脑中病毒,非常想在虚拟机进行游玩。    此为前提,话不多说,开搞!
软件报错截图
        


c6948e5b-12b1-43ee-8914-412bcd5fe898.png (12.39 KB, 下载次数: 1)
下载附件
软件报错截图
2025-10-25 15:04 上传

破解过程 (一阶段)
1.首先查壳
    通过PEiD软件查看程序是否加壳,此处扫描结果为“什么都没找到”。
    按作者理解这个程序用到的壳应该并非常见的壳。所以可能没有脱壳的方法。
        


image.png (15.11 KB, 下载次数: 1)
下载附件
查壳
2025-10-25 15:11 上传

2.尝试反编译调试
    通过任务管理器确认该程序为32位程序。打开x32dbg,将程序拖入调试窗口。
    使用模块字符串搜索功能,很快就找到了告警的字符串。
    这里的告警是壳的告警,没有做内容加密。
   


image.png (40.19 KB, 下载次数: 1)
下载附件
字符串
2025-10-25 15:26 上传

    通过点击这个字符串,可以跳转到打开窗口的函数附近。
   


image.png (134.38 KB, 下载次数: 1)
下载附件
报错
2025-10-25 15:35 上传

    通过分析可知,012848C9地址处的条件跳转为关键跳转。对此处使用nop进行填充,则程序会跳过弹出虚拟机环境告警。
   


image.png (125.88 KB, 下载次数: 1)
下载附件
修改
2025-10-25 15:39 上传

   
    打补丁后重新打开可以发现壳的告警信息不再弹出。
   
破解过程 (二阶段)
    壳的告警取消了以后,发现弹出了游戏登陆器的告警信息。
    很明显,登录器也限制了虚拟机不可运行。
   


image.png (20.08 KB, 下载次数: 1)
下载附件
报错
2025-10-25 15:42 上传

    在这里使用API断点工具可以断下来窗口打开的地方。
    作者实力很菜,跟了一段时间没有找到此处对应的关键JMP。
    壳对原登录程序进行了加密,将关键信息隐藏到了内存中,且调用方式也很难查。
   


image.png (49.93 KB, 下载次数: 1)
下载附件
2025-10-25 15:47 上传

   
    幸运的是,在登录器程序附近发现了原作者未加壳的程序(感谢🙏)。
    同样通过模块字符串查找,找到了关键jump。
    如下图所示,004016BA地址即为关键jump。在这个跳转未执行的情况,会发生请勿在虚拟机运行的告警。
   


image.png (108.88 KB, 下载次数: 1)
下载附件
2025-10-25 15:57 上传

    修改这个地址为JE跳转,打补丁后重新运行,报错信息不再弹出。
    就在作者以为大功告成的时候,这时候发现未加壳的登录无法连接服务器,无法登录游戏。
   


image.png (20.38 KB, 下载次数: 1)
下载附件
2025-10-25 16:19 上传

        查阅相关资料后,作者猜测这里的游戏壳可能对登录器进行了网络请求代理,必须通过壳的代理才能正常连接。
破解过程 (三阶段)
    虚拟机环境判断逻辑
    通过AI的帮助,作者分析了未加壳程序位于004016AE位置的环境判断CALL.
   


image.png (63.68 KB, 下载次数: 1)
下载附件
2025-10-25 16:08 上传

   
[color=]VMware的Backdoor机制规定,当客户机(虚拟机内的系统)向
[color=]0x5658
[color=]端口发送
IN
[color=]指令时,​
宿主机(物理机)会返回特定值0x564D5868
[color=]​(对应ASCII“VMXh”,VMware的标识)。
[color=]    如果
[color=]读取的值等于VMware的magic number
[color=],说明当前运行在VMware虚拟机中。
[color=]   
[color=]    由于作者没找到加壳后程序的关键jump,这导致无法对加壳后的程序进行破解。
[color=]    但是可以另辟蹊径,从虚拟机下手。
        
    若程序运行在 VMware 虚拟机中,可通过修改 VMware 配置,使宿主机在收到 0x5658端口的 IN请求时返回非 0x564D5868的值。具体操作:
    1.关闭目标虚拟机
    2.编辑虚拟机配置文件(.vmx文件),添加或修改以下参数:
        [Shell] 纯文本查看 复制代码isolation.tools.hgfs.disable = "TRUE"  # 禁用部分共享功能
monitor_control.restrict_backdoor = "TRUE"  # 限制 Backdoor 接口
        
       重新启动虚拟机,禁止使用虚拟机的告警已不再弹出,顺利进入游戏!
    如果大家有遇到这种情况,可以按照我的方法试一下😄

        方法可行的话给本篇文章点点赞,谢谢

黑体, 下载次数

zmolli775   

常见VM虚拟机检查有:
0环驱动检查VM标识
判断硬件ID含义AD15
主板UUID是VM开头
网卡地址开头
ACPI标识
内存标识
CPU与芯片组组合
N卡 nvidia-smi.exe -L 返回显卡GPU检查
BIOS信息标识
youngHacker   

这弹窗怎么这么像wd
Curry1987   

感谢分享  66666
博爵   

感谢分享,这弹窗的确看不出来什么游戏
weiduaini77   


youngHacker 发表于 2025-10-27 11:16
这弹窗怎么这么像wd

我也这么觉得 基本上就是了
zc333   

支持一波。。。。。。。。
折纸
OP
  


weiduaini77 发表于 2025-10-27 15:30
我也这么觉得 基本上就是了

没错 就是这个
博爵   


折纸 发表于 2025-10-27 20:38
没错 就是这个

也是老道友了呀,我之前玩了一个公益。玩了几天就不想玩了
章思源zsy   

感谢分享(^~^)
您需要登录后才可以回帖 登录 | 立即注册

返回顶部