mirror of
https://github.com/SabreTools/BinaryObjectScanner.git
synced 2026-04-22 14:13:09 +00:00
Replace tivola with copy-x. (#331)
This commit is contained in:
committed by
GitHub
parent
6220382531
commit
e5d0c5bdc4
@@ -19,6 +19,9 @@ namespace BinaryObjectScanner.Protection
|
||||
// TODO: Figure out if Light and Professional are what designate rings and rings+disccheck
|
||||
public class CopyX : IPathCheck, IPortableExecutableCheck
|
||||
{
|
||||
// Previous check 'Tivola Ring Protect' removed because it was found to actually be copy-x.
|
||||
// The checks were for ZDAT/webmast.dxx and ZDAT/webmast.dxx, for Redump IDs 81628 and 116418.
|
||||
|
||||
// https://web.archive.org/web/20011016234742/http://www.optimal-online.de:80/product/copy_x.htm
|
||||
// There are four kinds of copy-X; Light, Profesisonal, audio, and Trial Maker.
|
||||
// Audio is for Audio CDs. Might be scannable, might not. Samples needed to confirm.
|
||||
@@ -76,7 +79,7 @@ namespace BinaryObjectScanner.Protection
|
||||
// TODO: TKKG also has an NE 3.1x executable with a reference. This can be added later.
|
||||
// Samples: Redump ID 108150
|
||||
if (pex.OverlayStrings.Any(s => s.Contains("optgraph.dll")))
|
||||
return "copy-X";
|
||||
return "copy-X [Check disc for physical ring]";
|
||||
}
|
||||
|
||||
var strs = pex.GetFirstSectionStrings(".rdata");
|
||||
@@ -84,7 +87,7 @@ namespace BinaryObjectScanner.Protection
|
||||
{
|
||||
// Samples: Redump ID 82475, German Emergency 2 Deluxe, Redump ID 48393
|
||||
if (strs.Any(s => s.Contains("optgraph.dll")))
|
||||
return "copy-X";
|
||||
return "copy-X [Check disc for physical ring]";
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -147,7 +150,7 @@ namespace BinaryObjectScanner.Protection
|
||||
0x65, 0x5F, 0xFB, 0x06, 0x31, 0x31, 0x31, 0x31,
|
||||
0x00, 0x00, 0x1D, 0x1D, 0x1F, 0x1D, 0xFE, 0xFD,
|
||||
0x51, 0x57, 0x56, 0x51, 0xFB, 0x06, 0x33, 0x34,
|
||||
], "copy-X"),
|
||||
], "copy-X [Check disc for physical ring]"),
|
||||
};
|
||||
|
||||
var match = MatchUtil.GetFirstMatch(fileList[0], block, matchers, false);
|
||||
@@ -171,17 +174,17 @@ namespace BinaryObjectScanner.Protection
|
||||
// Samples: Redump ID 108150, Redump ID 48393
|
||||
|
||||
// File responsible for disc check
|
||||
new(new FilePathMatch("optgraph.dll"), "copy-X"),
|
||||
new(new FilePathMatch("optgraph.dll"), "copy-X [Check disc for physical ring]"),
|
||||
|
||||
// Seemingly comorbid file, referenced in above file
|
||||
new(new FilePathMatch("iofile.x64"), "copy-X"),
|
||||
new(new FilePathMatch("iofile.x64"), "copy-X [Check disc for physical ring]"),
|
||||
|
||||
// Seemingly comorbid file
|
||||
new(new FilePathMatch("sound.x64"), "copy-X"),
|
||||
new(new FilePathMatch("sound.x64"), "copy-X [Check disc for physical ring]"),
|
||||
|
||||
// Seemingly comorbid file
|
||||
// Check commented out until implementation can be decided
|
||||
// new(new FilePathMatch("gov_*.x64"), "copy-X"),
|
||||
// new(new FilePathMatch("gov_*.x64"), "copy-X [Check disc for physical ring]"),
|
||||
};
|
||||
return MatchUtil.GetFirstMatch(path, matchers, any: true);
|
||||
}
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
using System.Collections.Concurrent;
|
||||
#endif
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using BinaryObjectScanner.Interfaces;
|
||||
using SabreTools.Matching;
|
||||
using SabreTools.Matching.Paths;
|
||||
|
||||
namespace BinaryObjectScanner.Protection
|
||||
{
|
||||
/// <remarks>
|
||||
/// This protection needs far more research
|
||||
/// </remarks>
|
||||
public class TivolaRingProtection : IPathCheck
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
#if NET20 || NET35
|
||||
public Queue<string> CheckDirectoryPath(string path, IEnumerable<string>? files)
|
||||
#else
|
||||
public ConcurrentQueue<string> CheckDirectoryPath(string path, IEnumerable<string>? files)
|
||||
#endif
|
||||
{
|
||||
var matchers = new List<PathMatchSet>
|
||||
{
|
||||
new(Path.Combine("ZDAT", "webmast.dxx"), "Tivola Ring Protection [Check disc for physical ring]"),
|
||||
};
|
||||
|
||||
return MatchUtil.GetAllMatches(files, matchers, any: true);
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public string? CheckFilePath(string path)
|
||||
{
|
||||
var matchers = new List<PathMatchSet>
|
||||
{
|
||||
new(Path.Combine("ZDAT", "webmast.dxx"), "Tivola Ring Protection [Check disc for physical ring]"),
|
||||
};
|
||||
|
||||
return MatchUtil.GetFirstMatch(path, matchers, any: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user