Binary Object Scanner

November 7, 2025 · View on GitHub

Build and Test

C# protection, packer, and archive scanning library. This currently compiles as a library so it can be used in any C# application. A reference application called ProtectionScan is also included to demonstrate the abilities of the library. For an example of a program implementing the library, see MPF.

Please visit our sibling project, DRML, the DRM Library for a more in-depth look at some of the protections detected.

Releases

For the most recent stable build, download the latest release here: Releases Page

For the latest WIP build here: Rolling Release

NOTE: If you used the extraction functionality in previous releases, that has been separated into a standalone program called ExtractionTool.

NOTE: If you used the information printing functionality in previous releases, that has been separated into a standalone program called InfoPrint.

Compatibility Notes

Binary Object Scanner strives to have both full compatibility for scanning across .NET versions as well as across OSes. Unfortunately, this is not always the case. Please see the below list for known compatibility issues.

  • 7-zip archive - Extraction is only supported on .NET Framework 4.6.2 and higher due to SharpCompress support limitations
  • bzip2 archive - Extraction is only supported on .NET Framework 4.6.2 and higher due to SharpCompress support limitations
  • MoPaQ - Extraction is only supported in Windows x86 and x64 builds due to native DLL requirements
  • PKZIP and derived files (ZIP, etc.) - Extraction is only supported on .NET Framework 4.6.2 and higher due to SharpCompress support limitations
  • RAR archive - Extraction is only supported on .NET Framework 4.6.2 and higher due to SharpCompress support limitations
  • xz archive - Extraction is only supported on .NET Framework 4.6.2 and higher due to SharpCompress support limitations

Protections Detected

Below is a list of protections detected by BinaryObjectScanner. The two columns explain what sort of checks are performed to determine how the protection is detected. Generally speaking, it's better to have a content check than a path check.

Protection NameContent CheckPath CheckNotes
3PLockTrueFalse
321Studios Online ActivationTrueFalse
ActiveMARKTrueFalseVersion 5 unconfirmed²; version finding incomplete
AegiSoft License ManagerTrueTrue
Alpha-DVDFalseTrueUnconfirmed¹
Alpha-ROMTrueFalse
ArmadilloTrueFalse
BitpoolFalseTrue
ByteShieldTrueTrue
C-Dilla License Management Solution / CD-Secure / CD-CompressTrueTrue
Cactus Data ShieldTrueTrue
CD-Cops / DVD-CopsTrueTruePartially unconfirmed²
CD-GuardTrueTrue
CD-LockTrueTrue
CD-ProtectorFalseTrue
CD-XFalseTrueUnconfirmed¹
CDSHiELD SETrueFalse
Cenga ProtectDVDTrueTrue
ChannelwareTrueTrueVersion finding and detection of later versions unimplemented
ChosenBytes CodeLockTrueTruePartially unconfirmed²
copy-XTrueTrue
CopyKillerTrueTrue
CopyLok/CodeLokTrueFalse
CrypKeyTrueTrue
Cucko (EA Custom)TrueFalseDoes not detect all known cases
Denuvo Anti-Cheat/Anti-TamperTrueTrue
DigiGuardTrueTrue
Dinamic Multimedia Protection/LockBlocksFalseTrueLockBlocks needs manual confirmation of the presence of 2 rings
DiscGuardTrueTruePartially unconfirmed²
DVD-Movie-PROTECTFalseTrueUnconfirmed¹
DVD CryptFalseTrueUnconfirmed¹
EA Anti CheatTrueTrue
EA ProtectionsTrueFalseIncluding EA CDKey and EA DRM.
Easy Anti-CheatTrueTrue
Engine32TrueFalse
Executable-Based CD CheckTrueFalseDisabled due to overly-broad checks
Executable-Based Online RegistrationTrueFalsePossibly too broad
FreelockFalseTrue
Games for Windows - LiveTrueTrue
Gefest Protection SystemTrueFalse
Hexalock AutoLockTrueTrue
Hudson huPPPXTrueTrueBasically unknown protection
Impulse Reactor / Stardock Product ActivationTrueTrue
IndyVCDFalseTrueUnconfirmed¹
INTENIUM Trial & Buy ProtectionTrueFalse
JoWood X-Prot (v1/v2) / Xtreme-ProtectorTrueFalse
Kalypso LauncherTrueTrue
Key2AudioTrueTrueExisting checks found to actually be indicators of OpenMG, not key2Audio specifically.
Key-Lock (Dongle)TrueFalseUnconfirmed¹
LabelGate CDTrueTrueCurrently only LabelGate CD2 is detected.
LibCryptTrueFalseSeparate subfile scan only
LaserLokTrueTrue
MediaCloQTrueTrue
MediaMax CD3TrueTrue
MGI RegistrationTrueFalse
NEAC ProtectTrueTrue
nProtect GameGuardTrueTrue
nProtect KeyCryptTrueTrue
OpenMGTrueTrue
OriginTrueTrue
phenoProtectFalseFalseText file check only
PlayJTrueTrue
ProtectDISC / VOB ProtectCD/DVDTrueTrue
Protect DVD-VideoFalseTrueUnconfirmed¹
PlayStation Anti-modchipTrueFalseEn/Jp, not "Red Hand"; PSX executables only
Rainbow SentinelTrueTrue
RealArcadeTrueTrue
Ring PROTECH / ProRingTrueTruePartially unconfirmed²
RipGuardTrueTruePartially unconfirmed²
RoxxeTrueFalse
SafeDisc / SafeCastTrueTrueCan't distinguish between some versions of SafeDisc and SafeCast
SafeLockFalseTrue
SecuROMTrueTruev8.x and White Label detected partially²
SmartETrueTrue
SoftLockTrueTrue
SolidShieldTrueTrueSome Wrapper v1 not detected²
StarForceTrueFalsePartially unconfirmed², commented out issue with protect.exe false positives
SteamTrueTrue
SVKP (Slovak Protector)TrueTrue
Sysiphus / Sysiphus DVDTrueFalse
TAGESTrueTruePartially unconfirmed²
Themida/WinLicense/Code VirtualizerTrueFalseOnly certain products/versions currently detected
Tivola Ring ProtectionFalseTrueExisting checks found to actually be indicators of copy-X, rather than some Tivola-specific ring protection.
TZCopyProtectionFalseTruePartially unconfirmed²
Ubisoft OrbitFalseTrue
Uniloc SoftAnchorTrueTrueVersion finding is not implemented
UplayTrueTrue
Windows Media Data Session DRMTrueTrue
WinlockFalseTrue
WTM CD ProtectTrueTrue
XCPTrueTrue
yuPlay LauncherFalseTrue
ZzxzzFalseTrue

Notes

¹ - This means that I have not obtained one or more samples to ensure that either the original check from BurnOut or information found online is correct.

² - This is the same as ¹, but only for a subset of the checks.

Executable Packers Detected

Below is a list of executable packers detected by BinaryObjectScanner. The three columns explain what sort of checks are performed to determine how the protection is detected as well as if the contents can be extracted.

Protection NameContent CheckPath CheckExtractableNotes
.NET ReactorYesNoNo
7-zip SFXYesNoYes
Advanced Installer / Caphyon Advanced InstallerYesNoNo
ASPackYesNoNo
AutoPlay Media StudioYesNoNo
CExeYesNoYes
dotFuscatorYesNoNo
Embedded FileYesNoYesNot technically a packer
EXE StealthYesNoNo
Gentee InstallerYesNoNoIncludes "Create Install 2003"
Ghost InstallerYesNoNo
GkWare SFXYesNoNo
GP-InstallYesNoNo
HyperTech CrackProofYesNoNo
Inno SetupYesNoNo
InstallAnywhereYesNoNo
Installer VISEYesNoNo
Intel Installation FrameworkYesNoNo
Microsoft CAB SFXYesNoNo
MPRESSYesNoNo
NeoLiteYesNoNoOnly confirmed to detect version 2.X
NSISYesNoNo
PECompactYesNoNo
PEtiteYesNoNo
PKLITE32YesNoNo
Reflexive Arcade InstallerYesYesNo
Setup FactoryYesNoNo
ShrinkerYesNoNo
Smart Install MakerYesNoNo
Spoon InstallerYesNoNo
UPX and UPX (NOS Variant)YesNoNo
WinRAR SFXYesNoYes
WinZip SFXYesNoYes
WISE InstallerYesNoYes
Zylom WrapperYesNoNo

Game Engines Detected

Below is a list of game engines detected by BinaryObjectScanner. The two columns explain what sort of checks are performed to determine how the protection is detected. Generally speaking, it's better to have a content check than a path check.

Protection NameContent CheckPath CheckNotes
RenderWareYesNo

Container Formats

Below is a list of container formats that are supported in some way:

Format NameReportedExtractedNotes
7-zip archiveNoYesVia SharpCompress
AACS Media Key BlockYesN/ABluRay and HD-DVD variants detected
BD+ SVMYesN/A
BFPK custom archive formatNoYes
bzip2 archiveNoYesVia SharpCompress
Compound File Binary (CFB)NoYes
gzip archiveNoYes
Half-Life Game Cache File (GCF)NoYes
Half-Life Level (BSP)NoYes
Half-Life Package File (PAK)NoYes
Half-Life Texture Package File (WAD3)NoYes
Half-Life 2 Level (VBSP)NoYes
INI configuration fileNoN/AUsed in other detections currently
InstallShield Archive V3 (Z)NoYes
InstallShield CABNoYes
Linear ExecutableNo*NoNo existing checks
Link Data Security encrypted fileYesNo
Microsoft cabinet fileNoYes*Does not support LZX or Quantum compression
Microsoft LZ-compressed filesNoYes
MoPaQ game data archive (MPQ)NoYes*Via StormLibSharp
MS-DOS ExecutableNo*NoNo existing checks
New ExectuableYesYesSubset of extractions implemented
NovaLogic Game Archive Format (PFF)NoYes
PKZIP and derived files (ZIP, etc.)NoYesVia SharpCompress
PlayJ audio file (PLJ)YesNoUndocumented file format
Portable ExecutableYesYesSubset of extractions implemented
Quantum archive (Q)NoNoExtraction disabled due to compatibility issues
RAR archive (RAR)NoYesVia SharpCompress
RealArcade Installer (.rgs)YesNo
RealArcade Mezzanine (.mez)YesNo
SGA game archiveNoYes
StarForce Filesystem file (SFFS)YesNo
Tape archive (TAR)NoYes
Valve Package File (VPK)NoYes
XBox Package File (XZP)NoYes
xz archive (XZ)NoYesVia SharpCompress

Contributions

Contributions to the project are welcome. Please follow the current coding styles and please do not add any keys or legally dubious things to the code. Thank you to all of the testers, particularly from the MPF project who helped get this rolling.

Special Thanks

I want to give a special thanks to TheRogueArchivist and HeroponRikiBestest who have gone above and beyond helping both fix existing checks as well as add new ones.

I also want to give a shout out to BurnOut which was the original basis and inspriation for this work. This project is fully unaffiliated with the original BurnOut and its authors.