如何欺骗Windows 10/11使其认为存在互联网连接(UWP程序评估场景)
如何欺骗Windows 10/11使其认为存在互联网连接(UWP程序评估场景)
作为经常在离线环境里做UWP程序安全评估的分析师,我来分享几个实用的方法,完美适配你的测试场景——毕竟UWP确实依赖系统级的联网检测API,和普通桌面程序的逻辑不一样:
修改网络适配器TCP/IP配置,让系统认为网络已连接
首先,Windows显示“无连接”大多是因为适配器没有获取到有效IP。你可以手动给离线的网卡分配一个静态IP:- 打开「控制面板 > 网络和共享中心」,找到当前的离线适配器(比如以太网)
- 右键选择「属性」,找到「Internet协议版本4 (TCP/IPv4)」并双击打开
- 选择「使用下面的IP地址」,随便填一个私网IP(比如
192.168.1.100),子网掩码设为255.255.255.0,网关填一个虚构的地址(比如192.168.1.1),DNS可以填8.8.8.8或者你第二台机器的IP - 确定后,系统会立刻把网卡状态改成“已连接”,不过这只是第一步,UWP可能还会检测能否访问微软的联网验证节点,需要配合下面的方法。
劫持微软联网检测域名,用第二台机器模拟响应
Windows的「网络连接状态指示器(NCIS)」会定期访问www.msftconnecttest.com来确认是否真的有网,UWP的API就是依赖这个服务的结果:- 在你的第二台离线机器上,搭建一个简单的HTTP服务器(比如用Python的
python -m http.server 80命令,或者用轻量的HTTP服务工具) - 在第一台测试机上,用管理员权限打开
C:\Windows\System32\drivers\etc\hosts文件,添加一行:[第二台机器的IP] www.msftconnecttest.com - 执行命令
ipconfig /flushdns刷新DNS缓存 - 当Windows发起联网检测时,第二台机器的服务器会返回200 OK的响应,系统就会判定为“已连接到互联网”,UWP的检测逻辑也就被骗过了。
- 在你的第二台离线机器上,搭建一个简单的HTTP服务器(比如用Python的
用组策略/注册表强制跳过联网检测
如果不想折腾网络配置,直接让系统强制显示有网也是可行的:- 针对Windows专业版/企业版(组策略):
- 按下Win+R,输入
gpedit.msc打开组策略编辑器 - 导航到「计算机配置 > 管理模板 > 网络 > 网络连接状态指示器」
- 找到「关闭网络连接状态指示器活动测试」,设为「已启用」;再找到「将网络标记为已连接,即使连接到的网络没有互联网」,也设为「已启用」
- 不用重启,刷新一下网络状态就生效了
- 按下Win+R,输入
- 针对Windows家庭版(注册表):
- 按下Win+R,输入
regedit打开注册表编辑器 - 导航到
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows,如果没有NetworkConnectivityStatusIndicator这个项,右键新建项并命名 - 在这个项下面新建两个DWORD(32位)值:
- 命名为
NoActiveProbe,值设为1(关闭主动检测) - 命名为
ForceInternet,值设为1(强制标记为有网)
- 命名为
- 重启电脑后,系统就会一直显示有互联网连接,不管实际网络情况
- 按下Win+R,输入
- 针对Windows专业版/企业版(组策略):
备注:内容来源于stack exchange,提问作者zavryzr




