我们正在编写一个代码,使用Windows Defender API对C#中的文件进行按需扫描.
[DllImport(@"C:\Program Files\Windows Defender\MpClient.dll")]
public static extern int WDStatus(out bool pfEnabled);
[DllImport(@"C:\Program Files\Windows Defender\MpClient.dll")]
public static extern int MpManagerOpen(uint dwReserved, out IntPtr phMpHandle);
[DllImport(@"C:\Program Files\Windows Defender\MpClient.dll")]
public static extern int MpScanStart(IntPtr hMpHandle, uint ScanType, uint dwScanOptions, IntPtr pScanResources, IntPtr pCallbackInfo, out IntPtr phScanHandle);
[DllImport(@"C:\Program Files\Windows Defender\MpClient.dll")]
public static extern int MpHandleClose(IntPtr hMpHandle);
private void DoDefenderScan_Click(object sender, EventArgs e)
{
try
{
bool pfEnabled;
int result = WDStatus(out pfEnabled); //Returns the defender status - It's working properly.
ErrorHandler.ThrowOnFailure(result, VSConstants.S_OK); …
Run Code Online (Sandbox Code Playgroud) 我喜欢在 Windows 10 专业版上通过 GPO 禁用 Windows Defender 实时保护。当我配置 GPO 时,实时保护显示为关闭。然而,重新启动后,保护再次神奇地启用。
GPO 设置没有改变。我正在尝试禁用实时保护,以便能够分析和逆向工程恶意软件。
此外,即使 Windows 告诉我实时保护由管理员管理,它仍然在后台启用。
我真的想知道是否有办法完全禁用 Windows Defender + 实时保护,或者微软是否使这成为不可能。
阅读windows defender API的文档,例如在MpManagerOpen
Function中:
https://msdn.microsoft.com/en-us/library/windows/desktop/dn920115(v=vs.85).aspx
我看到所需的包含文件是MpClient.h
.但是我无法在任何地方找到它.有没有人知道在哪里可以找到这个文件,或者只是如何在没有它的情况下使用API(没有将原型和结构复制到我自己的代码中),在C程序中?
提前致谢.
在过去两个月左右的时间里,我一直在观察实时保护服务的一个奇怪现象,该服务捆绑在Windows 10的Windows Defender中.
当此服务设置为ON时,Visual Studio构建需要花费极长的时间才能完成.Visual Studio本身需要永远推出.此外,如果Outlook中安装了托管加载项(使用Visual Studio Tools For Office,VSTO编写),则Outlook需要13-14秒才能启动!禁用此服务后,Outlook将在两秒钟左右再次启动.
我已经在Twitter上通过Windows支持提出了这个问题,并尝试在线与Microsoft支持人员讨论这个问题一小时没有任何解决方案.环顾互联网,我可以看到有些用户报告了同样的问题
http://ardalis.com/speed-up-visual-studio-build-times
我已经注意到这只有两个月左右了.我尝试在Azure等中启动新的虚拟机来测试这个,并且在每个实例中我都注意到这个真正的时间保护服务是罪魁祸首.我的主要问题是Outlook加载时间说实话.
我试图在微软的答案的网站上发布这个位置,但到目前为止没有运气.我希望这里的任何人都知道如何在不为实时保护服务中的Outlook添加例外的情况下解决此问题(之后加载项按预期在200毫秒内加载).
我排除了Windows Defender中的以下文件夹,但“ Antimalware Service可执行文件”仍使用大量cpu。
C:\Program Files\Android\Android Studio
C:\Users\ME\.android
C:\Users\ME\MyAndroidProjects
C:\Users\ME\AppData\local\Android
我忘记了哪个文件夹/文件?
为了研究目的,我正在检查不同的键盘记录器,偶然发现了Refog:
https://www.refog.com/keylogger/
这个程序可以捕获很多系统事件,但真正引起我注意的是其他东西.该程序创建了一个名为Mpk的隐藏文件夹,路径为C:\ Windows\SysWOW64\Mpk.它被标记为操作系统文件文件夹,因为在我取消标记之前它是不可见的Hide protected operating system files (recommended)
.我想,这可以通过像这样的attrib命令完成,attrib +s +h "C:\Windows\SysWOW64\Mpk"
所以没有什么革命性的.
但是,他们还为Windows Defender添加了此文件夹的排除项.他们怎么能以编程方式执行此操作?我正在运行Windows 10 Pro x64.
我们的组织最近获得了EV code signing certificate
. 它确实给了我们即时SmartScreen
信任,但仍然发生了两件事:
一个小烦恼是,它向前几个下载者Chrome
发出了警告file.exe is not commonly downloaded and may be dangerous
,但它在一天之内就消失了,我们没有采取任何措施。
一个更大的问题是Windows Defender
。它的作用如下:
当我们的用户安装该程序时,它会标记并锁定所需的关键组件。大多数用户都会遇到这种情况。
\n我们在上传之前在本地扫描了程序组件,没有发现任何问题。我们的Virus & threat protection
是最新的。当我们从网站下载相同的文件并像普通用户一样安装时,我们也不会触发防病毒保护。为什么它的行为如此不一致,以至于当我们从互联网下载到内部 PC\xe2\x80\x99s 上时,它不会标记文件\xe2\x80\x99s,但大多数外部用户都会发生这种情况?
到目前为止,我们一直在从用户那里收集这些通用威胁名称和文件名,并将其提交给微软进行分析:https://www.microsoft.com/en-us/wdsi/filesubmission \n令人非常钦佩的是微软的分析师在一天内查看这些文件,但不好的是他们似乎只更新检测到的威胁名称的防病毒定义,而不是将整个文件标记为无害。这个问题变得更加令人沮丧,因为我们经常更新我们的安装程序,因为程序正在积极开发中。
\n我还担心这些带有 MS 威胁定义的更新没有足够快地正确传播给世界各地的 Windows 用户。如果用户不更新其定义或将其关闭,会发生什么情况?
\n有什么我们尚未采取但可以采取的措施来减少这些误报问题吗?
\nEV代码签名证书由DigiCert颁发,价格非常昂贵。MS 多次扫描签名文件并提高证书的信任评分后,这些问题会消失吗?我的意思是,它会减少尚未提交分析的未来构建的误报吗?
\ncode-signing windows-security windows-defender digicert ev-certificate
当实现IAmsiStream以使用 Windows Defender 执行扫描时,对于大于 ~20MB 的文件,它会失败并显示Value does not fall within the expected range.
.
这个实现中缺少什么?
public class AmsiStream : IAmsiStream
{
private readonly Stream _input;
private readonly string _name;
private static readonly byte[] _nullPtr = new byte[Marshal.SizeOf(IntPtr.Zero)];
public AmsiStream(Stream input, string name)
{
_input = input ?? throw new ArgumentNullException(nameof(input));
_name = name ?? throw new ArgumentNullException(nameof(name));
}
public int GetAttribute(AMSI_ATTRIBUTE attribute, int dataSize, byte[] data, out int retData)
{
const int E_NOTIMPL = unchecked((int)0x80004001);
const int …
Run Code Online (Sandbox Code Playgroud) 我已经设置了一个简单的 Electron 应用程序,它显示了一个纯 html 文件,并且它始终需要超过两秒钟才能启动。关键的性能测量是:
经过询问,我发现问题是由 Windows Defender 引起的。禁用其实时保护可以获得可接受的启动速度:
虽然这种加速完全解决了问题,但要求用户禁用 Windows Defender 以加快启动速度是行不通的。
我观察到一些流行的 Electron 应用程序(例如 Visual Studio Code)具有正常的启动时间,因此我认为有一种方法可以在不禁用 Windows Defender 的情况下实现这一目标。问题是:如何?
我唯一想到的是签署电子二进制文件,希望它能解决问题。但是由于签名证书要花钱,所以我宁愿在走这条路之前确定我需要它。如果有这方面经验的人能插话就太好了!
我正在寻找一种不需要告诉我的用户修改他们的环境的解决方案。
我的软件是.NET 应用程序。使用 Visual Studio 编译的原始 .exe 工作正常,Microsoft Defender 对此或任何依赖项没有任何说明。
我用 Inno Setup 制作了一个安装程序,到目前为止,它在许多不同的机器上都运行良好。
安装程序部署我的两个 .exe(主应用程序和一个管理工具)和我自己的库、一些其他库(Helix Toolkit、Triangles.net)以及 .NET 5.0 中的一些库(因此不需要该框架)离线安装)。
从今天早上开始,我有以下几点:
Program Files
目录时,没有检测到木马(即使我手动测试目录)。需要明确的是:
Inno Setup 是否有可能将该木马放入我的 exe 中?如果是这样,我可以采取什么措施来预防或规避它?
我调查得越多,我就越不了解 Inno Setup 的作用。我的原始 exe 文件只有 280 Ko,而 Inno Setup 安装的 exe 文件重 132 Mo。而且,该木马仅在 inno setup 安装的 exe 中检测到。
屏幕截图(抱歉法国操作系统):
Inno Setup 安装程序现在被视为包含木马并被隔离。
windows-defender ×10
windows ×5
antivirus ×2
c# ×2
android ×1
antimalware ×1
c ×1
code-signing ×1
digicert ×1
dllimport ×1
electron ×1
gpo ×1
inno-setup ×1
javascript ×1
performance ×1
trojan ×1
vsto ×1
winapi ×1
windows-10 ×1