2018-07-16 00:32:50 -07:00
# BurnOutSharp
2018-07-16 16:47:52 -07:00
2018-07-19 14:42:18 -07:00
[](https://ci.appveyor.com/project/mnadareski/burnoutsharp)
2021-01-25 09:53:18 -08:00
C# port of the protection scanning ability of [BurnOut ](http://burnout.sourceforge.net/ ) plus numerous updates and additions. This currently compiles as a library so it can be used in any C# application. For an example of usage, see [MPF ](https://github.com/SabreTools/MPF ).
2018-07-16 16:47:52 -07:00
2020-09-10 21:10:32 -07:00
In addition to the original BurnOut code, the following libraries (or ports thereof) are used for file handling:
2022-12-23 15:46:42 -08:00
- [LibMSPackSharp ](https://github.com/mnadareski/LibMSPackSharp ) - Microsoft CAB extraction [Only used in .NET 6.0 builds, unstable]
2022-06-23 13:58:48 -07:00
- [openmcdf ](https://github.com/ironfede/openmcdf ) - MSI extraction
2022-12-08 22:50:42 -08:00
- [psxt001z ](https://github.com/Dremora/psxt001z ) - PS1 LibCrypt detection [Ported to C#]
2022-12-26 12:58:03 -08:00
- [SharpCompress ](https://github.com/adamhathcock/sharpcompress ) - Common archive format extraction
- [StormLibSharp ](https://github.com/robpaveza/stormlibsharp ) - MoPaQ extraction [Unused in .NET 6.0 builds due to Windows-specific libraries]
2020-09-10 21:10:32 -07:00
- [UnshieldSharp ](https://github.com/mnadareski/UnshieldSharp ) - InstallShield CAB extraction
- [WiseUnpacker ](https://github.com/mnadareski/WiseUnpacker ) - Wise Installer extraction
2022-12-22 21:58:26 -08:00
- [WixToolset.Dtf ](https://github.com/wixtoolset/Dtf ) - Microsoft CAB extraction [Unused in .NET 6.0 builds due to Windows-specific libraries]
2018-07-16 16:47:52 -07:00
2022-12-26 12:58:03 -08:00
Valve packages handling is based [HLLibSharp ](https://github.com/mnadareski/HLLibSharp ) but lacks everything but parsing and extraction capability.
2018-07-16 16:47:52 -07:00
## Protections Detected
2021-09-20 21:02:14 -07:00
Below is a list of protections detected by BurnOutSharp. 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 Name | Content Check | Path Check | Notes |
| --------------- | ------------- | ---------- | ----- |
| 3PLock | True | False | |
| 321Studios Online Activation | True | False | |
| AACS | False | True | BluRay and HD-DVD variants detected |
| ActiveMARK | True | False | Version 5 unconfirmed²; version finding incomplete |
2022-08-13 21:03:27 -06:00
| AegiSoft License Manager | True | True | |
2021-09-20 21:02:14 -07:00
| Alpha-DVD | False | True | Unconfirmed¹ |
2022-10-13 21:58:49 -06:00
| Alpha-ROM | True | False | |
2021-09-20 21:02:14 -07:00
| BD+ | False | True | |
| Bitpool | False | True | |
2022-12-19 23:49:34 -08:00
| ByteShield | True | True | |
2022-11-04 10:31:20 -06:00
| C-Dilla License Management Solution / CD-Secure / CD-Compress | True | True | |
2021-09-20 21:02:14 -07:00
| Cactus Data Shield | True | True | |
| CD-Cops / DVD-Cops | True | True | Partially unconfirmed² |
2022-12-14 13:11:23 -07:00
| CD-Guard | True | True | |
2022-10-13 12:50:43 -06:00
| CD-Lock | True | True | |
2022-11-06 22:04:03 -07:00
| CD-Protector | False | True | |
2021-09-20 21:02:14 -07:00
| CD-X | False | True | Unconfirmed¹ |
| CDSHiELD SE | True | False | |
2022-07-05 22:03:27 -06:00
| Cenga ProtectDVD | True | True | |
2022-12-02 14:56:08 -08:00
| ChosenBytes CodeLock | True | True | Partially unconfirmed² |
2021-09-20 21:02:14 -07:00
| CopyKiller | True | True | Unconfirmed¹ |
2022-12-02 14:56:08 -08:00
| CopyLok/CodeLok | True | False | |
2022-07-13 11:52:49 -07:00
| Cucko (EA Custom) | True | False | Does not detect all known cases |
2022-10-29 00:10:08 -06:00
| Denuvo Anti-Cheat/Anti-Tamper| True | True | |
2022-06-22 14:52:58 -06:00
| Dinamic Multimedia Protection/LockBlocks | False | True | LockBlocks needs manual confirmation of the presence of 2 rings |
2022-07-29 00:31:04 -06:00
| DiscGuard | True | True | Partially unconfirmed² |
2021-09-20 21:02:14 -07:00
| DVD-Movie-PROTECT | False | True | Unconfirmed¹ |
| DVD Crypt | False | True | Unconfirmed¹ |
2022-07-13 11:52:49 -07:00
| EA Protections | True | False | Including EA CDKey and EA DRM. |
2022-08-13 21:09:46 -06:00
| Easy Anti-Cheat | True | True | |
2021-09-20 21:02:14 -07:00
| ~~Executable-Based CD Check~~ | True | False | Disabled due to overly-broad checks |
| Executable-Based Online Registration | True | False | Possibly too broad |
2022-11-06 22:30:59 -07:00
| Freelock | False | True | |
2021-09-20 21:02:14 -07:00
| Games for Windows - Live | True | True | |
2022-12-14 17:37:06 -07:00
| Gefest Protection System | True | False | |
2022-07-26 21:17:28 -06:00
| Hexalock AutoLock | True | True | |
2021-09-20 21:02:14 -07:00
| Impulse Reactor / Stardock Product Activation | True | True | |
| IndyVCD | False | True | Unconfirmed¹ |
2022-08-13 21:04:26 -06:00
| INTENIUM Trial & Buy Protection | True | False | |
2021-09-20 21:02:14 -07:00
| JoWood X-Prot (v1/v2) / Xtreme-Protector | True | False | |
2022-07-07 16:24:41 -06:00
| ~~Key2Audio~~ | True | True | Existing checks found to actually be indicators of OpenMG, not key2Audio specifically. |
2021-09-20 21:02:14 -07:00
| Key-Lock (Dongle) | True | False | Unconfirmed¹ |
2022-07-07 16:24:41 -06:00
| LabelGate CD | True | True | Currently only LabelGate CD2 is detected. |
2021-09-20 21:02:14 -07:00
| LibCrypt | True | False | Separate subfile scan only |
| LaserLok | True | True | |
2022-07-27 14:06:52 -06:00
| MediaCloQ | True | True | |
2021-09-20 21:02:14 -07:00
| MediaMax CD3 | True | True | |
2022-12-14 17:35:01 -07:00
| nProtect GameGuard | True | True | |
| nProtect KeyCrypt | True | True | |
2022-07-07 16:24:41 -06:00
| OpenMG | True | True | |
2021-09-20 21:02:14 -07:00
| Origin | True | True | |
2022-06-16 23:13:02 -06:00
| phenoProtect | False | False | Text file check only |
2022-10-11 22:00:30 -06:00
| PlayJ | True | True | |
2021-09-20 21:02:14 -07:00
| ProtectDISC / VOB ProtectCD/DVD | True | False | |
| Protect DVD-Video | False | True | Unconfirmed¹ |
| PlayStation Anti-modchip | True | False | En/Jp, not "Red Hand"; PSX executables only |
2022-11-06 22:03:23 -07:00
| Rainbow Sentinel | True | True | |
2022-10-13 21:58:49 -06:00
| Ring PROTECH / ProRing | True | True | Partially unconfirmed² |
2021-09-20 21:02:14 -07:00
| SafeDisc / SafeCast | True | True | Can't distinguish between some versions of SafeDisc and SafeCast |
2022-10-13 21:58:49 -06:00
| SafeLock | False | True | |
2022-03-15 22:35:44 -07:00
| SecuROM | True | True | v8.x and White Label detected partially² |
2021-09-20 21:02:14 -07:00
| SmartE | True | True | |
2022-12-19 21:39:24 -08:00
| SoftLock | True | True | |
2021-09-20 21:02:14 -07:00
| SolidShield | True | True | Some Wrapper v1 not detected² |
2022-02-04 15:24:41 -08:00
| StarForce | True | False | Partially unconfirmed², commented out issue with `protect.exe` false positives |
2022-03-14 12:16:38 -07:00
| Steam | True | True | |
2021-09-20 21:02:14 -07:00
| SVKP (Slovak Protector) | True | False | |
| Sysiphus / Sysiphus DVD | True | False | |
| TAGES | True | True | Partially unconfirmed² |
2022-12-02 14:52:28 -08:00
| Themida/WinLicense/Code Virtualizer | True | False | Only certain products/versions currently detected |
2021-09-20 21:02:14 -07:00
| Tivola Ring Protection | False | True | |
2022-11-06 22:05:58 -07:00
| TZCopyProtection | False | True | Partially unconfirmed² |
2022-03-14 14:56:41 -07:00
| Uplay | True | True | |
2022-06-29 15:28:46 -06:00
| Windows Media Data Session DRM | True | True | |
2022-11-06 22:22:58 -07:00
| Winlock | False | True | |
2021-09-20 21:02:14 -07:00
| WTM CD Protect | True | True | |
| XCP | True | True | |
| Zzxzz | False | True | |
**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.
2020-10-30 09:16:16 -07:00
## Executable Packers Detected
2021-09-20 21:02:14 -07:00
Below is a list of executable packers detected by BurnOutSharp. 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 Name | Content Check | Path Check | Extractable |
| --------------- | ------------- | ---------- | ----------- |
2022-12-18 14:18:35 -08:00
| 7-zip SFX | Yes | No | No |
2021-09-20 21:02:14 -07:00
| Advanced Installer / Caphyon Advanced Installer | Yes | No | No |
| Armadillo | Yes | No | No |
2022-07-11 21:23:44 -07:00
| ASPack | Yes | No | No |
2022-04-02 00:23:32 -06:00
| AutoPlay Media Studio | Yes | No | No |
2022-12-28 22:21:18 -08:00
| CExe | Yes | No | Yes |
2021-09-20 21:02:14 -07:00
| dotFuscator | Yes | No | No |
| EXE Stealth | Yes | No | No |
2022-03-15 22:35:44 -07:00
| Gentee Installer | Yes | No | No |
2021-09-20 21:02:14 -07:00
| Inno Setup | Yes | No | No |
2021-10-26 11:23:08 -06:00
| InstallAnywhere | Yes | No | No |
2021-09-20 21:02:14 -07:00
| Installer VISE | Yes | No | No |
| Intel Installation Framework | Yes | No | No |
| Microsoft CAB SFX | Yes | No | No |
| NSIS | Yes | No | No |
| PECompact | Yes | No | No |
2021-09-23 13:51:28 -07:00
| PEtite | Yes | No | No |
2021-09-20 21:02:14 -07:00
| Setup Factory | Yes | No | No |
2022-03-15 22:44:10 -07:00
| Shrinker | Yes | No | No |
2021-09-20 21:02:14 -07:00
| UPX and UPX (NOS Variant) | Yes | No | No |
| WinRAR SFX | Yes | No | Yes |
| WinZip SFX | Yes | No | Yes |
| WISE Installer | Yes | No | Yes |
2022-12-26 12:58:03 -08:00
## Container Formats
Below is a list of container formats that are supported in some way:
| Format Name | Information Printing | Detection | Extraction | Notes |
| --- | --- | --- | --- | --- |
| 7-zip archive | No | Yes | Yes | Via `SharpCompress` |
| BFPK custom archive format | Yes | Yes | Yes | |
| bzip2 archive | No | Yes | Yes | Via `SharpCompress` |
| gzip archive | No | Yes | Yes | Via `SharpCompress` |
| Half-Life Game Cache File (GCF) | Yes | Yes | Yes | |
| Half-Life Level (BSP) | Yes | Yes | Yes | |
| Half-Life Package File (PAK) | Yes | Yes | Yes | |
| Half-Life Texture Package File (WAD) | Yes | Yes | Yes | |
| Half-Life 2 Level (VBSP) | Yes | Yes | Yes | |
2022-12-26 14:42:41 -08:00
| INI configuration file | No | No | No | Used in other detections currently |
2022-12-26 12:58:03 -08:00
| InstallShield Archive V3 (Z) | No | Yes | Yes | Via `UnshieldSharp` |
| InstallShield CAB | No | Yes | Yes | Via `UnshieldSharp` |
2022-12-26 13:01:37 -08:00
| Linear Executable | No | No | No | Skeleton only |
2022-12-28 22:31:46 -08:00
| Microsoft cabinet file | Yes | Yes | Yes | Via `WixToolset.Dtf` / ~~`LibMSPackSharp`~~ (Currently disabled) |
2022-12-28 22:54:56 -08:00
| Microsoft LZ-compressed files | No | Yes | Yes | |
2022-12-26 12:58:03 -08:00
| MoPaQ game data archive (MPQ) | No | Yes | Yes | Via `StormLibSharp` |
| Microsoft installation package (MSI) | No | Yes | Yes | Via `OpenMcdf` |
2022-12-26 13:01:37 -08:00
| MS-DOS Executable | Yes | Yes | No | Incomplete |
| New Exectuable | Yes | Yes | No | Incomplete |
2022-12-26 12:58:03 -08:00
| PKZIP and derived files (ZIP, etc.) | No | Yes | Yes | Via `SharpCompress` |
| PlayJ audio file (PLJ) | No | Yes | No | |
2022-12-26 13:01:37 -08:00
| Portable Executable | Yes | Yes | No* | Some packed executables are supported |
2022-12-26 12:58:03 -08:00
| RAR archive (RAR) | No | Yes | Yes | Via `SharpCompress` |
2022-12-27 01:07:46 -08:00
| SGA game archive | Yes | Yes | Yes | |
2022-12-26 14:42:41 -08:00
| StarForce Filesystem file (SFFS) | No | Yes | No | Skeleton only |
2022-12-26 12:58:03 -08:00
| Tape archive (TAR) | No | Yes | Yes | Via `SharpCompress` |
| Valve Package File (VPK) | Yes | Yes | Yes | |
| XBox Package File (XZP) | Yes | Yes | Yes | |
| xz archive (XZ) | No | Yes | Yes | Via `SharpCompress` |
2020-10-31 23:57:02 -07:00
2018-07-16 16:47:52 -07:00
## Contributions
2021-03-02 12:14:14 -08:00
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.
2018-07-16 16:47:52 -07:00
2022-07-11 22:45:12 -07:00
## Special Thanks
2022-09-26 10:35:04 -06:00
I want to give a special thanks to [TheRogueArchivist ](https://github.com/TheRogueArchivist ) who has gone above and beyond helping both fix existing checks as well as add new ones.