mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-04-19 04:32:55 +00:00
Add Hudson huPPPX detection
This commit is contained in:
4
.vscode/launch.json
vendored
4
.vscode/launch.json
vendored
@@ -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",
|
||||
|
||||
@@ -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");
|
||||
|
||||
60
BinaryObjectScanner/Protection/HudsonHuPPPX.cs
Normal file
60
BinaryObjectScanner/Protection/HudsonHuPPPX.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 | |
|
||||
|
||||
Reference in New Issue
Block a user