Skip to content

Add check for modified securom product activation. #372

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions BinaryObjectScanner/Protection/SecuROM.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
using SabreTools.Matching;
using SabreTools.Matching.Content;
using SabreTools.Matching.Paths;
using SabreTools.Models.PortableExecutable;
using SabreTools.Serialization;
using SabreTools.Serialization.Wrappers;

namespace BinaryObjectScanner.Protection
Expand Down Expand Up @@ -44,6 +46,18 @@ public class SecuROM : IExecutableCheck<PortableExecutable>, IPathCheck
if (name.OptionalContains("SecuROM Activate & Play"))
return $"SecuROM Product Activation v{pex.GetInternalVersion()}";

// Fallback for PA if none of the above occur, in the case of companies that used their own modified PA
// variants. PiD refers to this as "SecuROM Modified PA Module".
// Found in Redump entries 111997 (paul.dll) and 56373+56374 (AurParticleSystem.dll). The developers of
// both, Softstar and Aurogon respectively(?), seem to have some connection, and use similar-looking
// modified PA. It probably has its own name like EA's GAM, but I don't currently know what that would be.
// Regardless, even if these are given their own named variant later, this check should remain in order to
// catch other modified PA variants (this would have also caught EA GAM, for example) and to match PiD's
// detection abilities.
name = pex.Model.ExportTable?.ExportNameTable?.Strings?[0];
if (name.OptionalEquals("drm_pagui_doit"))
return $"SecuROM Product Activation - Modified";

// Get the matrosch section, if it exists
if (pex.ContainsSection("matrosch", exact: true))
return $"SecuROM Matroschka Package";
Expand Down
Loading