Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的c#TCP套接字程序正在被Windows Defender隔离_C#_Sockets - Fatal编程技术网

我的c#TCP套接字程序正在被Windows Defender隔离

我的c#TCP套接字程序正在被Windows Defender隔离,c#,sockets,C#,Sockets,我已经写了一个c#程序来监控我女儿在线上课时在电脑上做什么(由于新冠病毒的封锁)。 她习惯于不和朋友聊天,而不是听课。上课时,她还玩Minecraft 我没有时间继续检查她,所以我妻子催促我写这个软件 但Windows Defender检测到该软件为特洛伊木马,如下所示 检测到:特洛伊木马:Script/Wacatac.B!毫升 此程序很危险,会执行攻击者的命令 我可以看出它是一种特洛伊木马,但它并没有被用在这方面。我只是简单地使用TCP套接字来让我自己或我的妻子监视我们的女儿,并向她发送消息,

我已经写了一个c#程序来监控我女儿在线上课时在电脑上做什么(由于新冠病毒的封锁)。 她习惯于不和朋友聊天,而不是听课。上课时,她还玩Minecraft

我没有时间继续检查她,所以我妻子催促我写这个软件

但Windows Defender检测到该软件为特洛伊木马,如下所示

检测到:特洛伊木马:Script/Wacatac.B!毫升 此程序很危险,会执行攻击者的命令

我可以看出它是一种特洛伊木马,但它并没有被用在这方面。我只是简单地使用TCP套接字来让我自己或我的妻子监视我们的女儿,并向她发送消息,如果需要的话,还可以远程关闭有问题的应用程序。 MS Defender在我微调exe以执行我需要它执行的操作时,一直隔离每个新编译的方式是一种真正的绑定

我希望有人能找到解决这个问题的办法。 毕竟,我使用的API(System.Net.Sockets)是Microsoft DotNet库的一部分。 这就好像微软禁止使用它提供的API一样

我的女儿在2021年3月8日回到学校,所以在那之后(希望如此)它将是多余的,但作为一名开发人员,我仍然想知道如何解决这个问题

。。。远程关闭有问题的应用程序

在某种程度上,这确实使您的程序“执行来自攻击者的命令”。问题似乎不在于您使用的API,而在于程序的实际功能


您可以尝试使用类似ConfuserEx的东西混淆您的程序,但Windows Defender也可能会标记混淆的版本,因为这是一些真正的恶意软件隐藏自己的方式。最简单的解决方案是将程序放在一个单独的目录中,并将该目录添加到Windows Defender的排除列表中。

我们经常遇到此类问题,实际上您对此无能为力。误报只是我们必须处理的一部分,对于个人远程管理工具(或我自己的常见案例,自定义AV升级脚本)等低发行量项目,处理误报的唯一方法是在计算机上安装程序时以及每次更新代码时,为您自己的程序添加异常

这就好像微软禁止使用它提供的API一样

不幸的是,恶意软件使用相同的API。AV供应商不断升级其定义,以尽可能多地捕获威胁,恶意软件使用的常见技术也出现在远程管理工具中

通过快速搜索,它看起来像
Wacatac.B!ml
是一个特别有问题的检测,它已经影响了所有合法的应用程序,包括Blender的开源启动器和其他一些项目

体验!ml
tag表示该定义是通过机器学习得出的,这意味着它很可能是一种深层次的启发式而不是代码指纹

可能的解决方案 绕过这种启发式检测的最常用方法是使用。因为这需要一个相对昂贵的认证过程,所以它不太可能成为您内部儿童监控工具的有用解决方案

在您的情况下,可能有一条路径或将允许您继续完善您的工具,而不必担心它不断被检测和阻止。我不建议将其用于生产系统,但仅用于家用,它很简单,尽管有时并不可靠


最后,您可以从根本上更改代码。如果找不到一种避免使用当前代码库检测的方法,那么请考虑使用完全不同的技术。启用powershell远程处理并在网络上的另一台计算机上运行收集器脚本。构建一个基于web的代理,它轮询web服务(当然是在本地网络上)以获取要运行的命令。使用一个流行的库来处理实际的通信,而不是自己访问套接字。可能效率不高,但有时只需一次更改,就可以获得误报,让您远离地狱。

为什么不将该程序从Windows Defender中排除?为什么要制作一个监控应用程序,而不是像这样,甚至只是配置一个基本的家庭路由器,在她上学的时间内屏蔽这些网站?虽然你的程序可能不是Defender的特洛伊木马指纹,但你的问题中没有任何东西表明这是一个编程问题。没有一个用户无法对代码说任何具体内容,但从您的描述来看,它似乎是软件中的一个合法标志。这不是使用套接字本身,而是程序的其余部分如何处理套接字上的内容。来自AV软件的误报需要与软件的发布者联系。如果您的问题有一个编程解决方案,那么恶意软件编写者会使用这种解决方案。@PeterDuniho根据“我可以在这里询问什么主题?”这符合“软件开发特有的一个实际的、可回答的问题”,不在特定排除范围内。对于这种类型的问题,没有文字上的最低限度的、可复制的示例要求。@Corey:这根本不是一个关于编程的问题,它被关闭的原因也不是因为它缺少一个实例。我之所以提到这一点,是因为除了离题之外,这个问题还缺乏足够的信息,任何人都无法对代码本身做出明智的评论。代码混淆者确实倾向于提高程序的启发式分数,使其更有可能被检测为恶意软件。通常,最好的答案是让程序的行为不像恶意软件,而不是更多:)