MLVScan.Core
1.5.0
dotnet add package MLVScan.Core --version 1.5.0
NuGet\Install-Package MLVScan.Core -Version 1.5.0
<PackageReference Include="MLVScan.Core" Version="1.5.0" />
<PackageVersion Include="MLVScan.Core" Version="1.5.0" />
<PackageReference Include="MLVScan.Core" />
paket add MLVScan.Core --version 1.5.0
#r "nuget: MLVScan.Core, 1.5.0"
#:package MLVScan.Core@1.5.0
#addin nuget:?package=MLVScan.Core&version=1.5.0
#tool nuget:?package=MLVScan.Core&version=1.5.0
MLVScan.Core
MLVScan.Core is a cross-platform malware detection engine for .NET assemblies, powered by IL analysis with Mono.Cecil. It serves as the scanning backbone for MLVScan (MelonLoader, BepInEx 5.x, and BepInEx 6.x Mono/Il2Cpp), MLVScan.DevCLI, and MLVScan.Web through the @mlvscan/wasm-core package.
Why MLVScan?
Most modders download mods from trusted sites like Thunderstore or NexusMods, where files are typically already scanned by VirusTotal. This catches most plain viruses, but sophisticated threats often slip through.
MLVScan acts as your second line of defense. It specifically targets:
- Virus loaders: malicious DLLs designed to download additional payloads.
- Obfuscation techniques: code that hides its true purpose from standard AV.
- Stealthy payloads: threats that do not match known signatures.
Think of it as the checkpoint after VirusTotal: catching what traditional scanners miss.
Installation
dotnet add package MLVScan.Core
Quick Usage
using MLVScan;
using MLVScan.Models.Dto;
using MLVScan.Services;
var rules = RuleFactory.CreateDefaultRules();
var scanner = new AssemblyScanner(rules);
var assemblyPath = "path/to/suspicious.dll";
var assemblyBytes = File.ReadAllBytes(assemblyPath);
var findings = scanner.Scan(assemblyPath).ToList();
var result = ScanResultMapper.ToDto(
findings,
Path.GetFileName(assemblyPath),
assemblyBytes,
new ScanResultOptions
{
Platform = "my-tool",
PlatformVersion = "1.0.0"
});
Console.WriteLine($"{result.Disposition?.Classification}: {result.Disposition?.Headline}");
if (result.ThreatFamilies?.Count > 0)
{
foreach (var family in result.ThreatFamilies)
{
Console.WriteLine($"Matched family: {family.DisplayName} ({family.FamilyId})");
}
}
foreach (var finding in result.Findings)
{
Console.WriteLine($"[{finding.Severity}] {finding.RuleId}: {finding.Description}");
}
The scanner emits rule findings as the foundational evidence, but the primary verdict comes from the threat-intel layer: matched threatFamilies and the final disposition built on top of those findings.
Documentation
Complete documentation is available in the MLVScan.Core docs.
Features
- Platform agnostic: works on Windows, Linux, and WebAssembly.
- Multi-signal detection: context-aware analysis reduces false positives.
- Stream support: scan files from memory without writing to disk.
- Deep behavior analysis: correlates practical decode, load, and execute behavior chains in compiled code.
Licensed under GPL-3.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Mono.Cecil (>= 0.11.6)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.0 | 209 | 5/18/2026 |
| 1.4.1 | 247 | 5/5/2026 |
| 1.4.0 | 325 | 4/17/2026 |
| 1.3.8 | 266 | 4/4/2026 |
| 1.3.7 | 136 | 4/3/2026 |
| 1.3.6 | 266 | 3/23/2026 |
| 1.3.5 | 103 | 3/23/2026 |
| 1.3.4 | 119 | 3/23/2026 |
| 1.3.3 | 134 | 3/21/2026 |
| 1.3.2 | 108 | 3/21/2026 |
| 1.3.1 | 114 | 3/20/2026 |
| 1.3.0 | 225 | 3/12/2026 |
| 1.2.9 | 129 | 3/11/2026 |
| 1.2.8 | 144 | 3/9/2026 |
| 1.2.7 | 98 | 3/9/2026 |
| 1.2.6 | 110 | 3/8/2026 |
| 1.2.5 | 106 | 3/7/2026 |
| 1.2.4 | 107 | 3/5/2026 |
| 1.2.3 | 109 | 3/2/2026 |
| 1.2.2 | 107 | 3/1/2026 |