Add Hudson huPPPX detection

This commit is contained in:
Matt Nadareski
2025-09-07 12:36:37 -04:00
parent e497540bdc
commit 28783c83cf
4 changed files with 71 additions and 1 deletions

4
.vscode/launch.json vendored
View File

@@ -11,7 +11,9 @@
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/ProtectionScan/bin/Debug/net9.0/ProtectionScan.dll",
"args": [],
"args": [
"/home/matt/Downloads/_BADEXE/"
],
"cwd": "${workspaceFolder}/ProtectionScan",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",

View File

@@ -78,6 +78,13 @@ namespace BinaryObjectScanner.FileType
else if (fileContent.Contains("FREELOCK"))
protections.Add("Freelock");
// Hudson huPPPX
// Found in setup.inx
if (fileContent.Contains("HVRCD_IS_"))
return "Hudson huPPPX";
else if (fileContent.Contains("HVCDISSR"))
return "Hudson huPPPX";
// MediaCloQ
if (fileContent.Contains("SunnComm MediaCloQ"))
protections.Add("MediaCloQ");

View File

@@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using BinaryObjectScanner.Interfaces;
using SabreTools.Matching;
using SabreTools.Matching.Paths;
using SabreTools.Serialization.Wrappers;
namespace BinaryObjectScanner.Protection
{
/// <summary>
/// Hudson huPPPX device control library
/// </summary>
/// <remarks>
/// Basically unknown copy protection scheme found in Bomberman Vol 2 (Japan).
/// Within the installshield program (setup.inx), there's a call to a disc check (using HVCDISSR.DLL)
/// that fails even for mounted bin/cue with intentional errors.
/// </remarks>
public class HudsonHuPPPX : IExecutableCheck<PortableExecutable>, IPathCheck
{
/// <inheritdoc/>
public string? CheckExecutable(string file, PortableExecutable exe, bool includeDebug)
{
var exportTable = exe.ExportTable;
if (exportTable != null)
{
// Found in Bomberman Vol 2 (Japan)
if (exportTable.ExportDirectoryTable?.Name == "HVCDISSR.DLL")
return "Hudson huPPPX";
// Found in Bomberman Vol 2 (Japan)
if (Array.Exists(exportTable.ExportNameTable?.Strings, s => s.StartsWith("HVRCD_IS_")))
return "Hudson huPPPX";
}
return null;
}
/// <inheritdoc/>
public List<string> CheckDirectoryPath(string path, List<string>? files)
{
var matchers = new List<PathMatchSet>
{
new(new FilePathMatch("HVCDISSR.DLL"), "Hudson huPPPX"),
};
return MatchUtil.GetAllMatches(files, matchers, any: true);
}
/// <inheritdoc/>
public string? CheckFilePath(string path)
{
var matchers = new List<PathMatchSet>
{
new(new FilePathMatch("HVCDISSR.DLL"), "Hudson huPPPX"),
};
return MatchUtil.GetFirstMatch(path, matchers, any: true);
}
}
}

View File

@@ -81,6 +81,7 @@ Below is a list of protections detected by BinaryObjectScanner. The two columns
| Games for Windows - Live | True | True | |
| Gefest Protection System | True | False | |
| Hexalock AutoLock | True | True | |
| Hudson huPPPX | True | True | Basically unknown protection |
| Impulse Reactor / Stardock Product Activation | True | True | |
| IndyVCD | False | True | Unconfirmed¹ |
| INTENIUM Trial & Buy Protection | True | False | |