Skip to content

Commit 759e4be

Browse files
Update release control executable table (#414)
* Move dictionaries to constants file * Fix paste * Update RC table with newly found executables
1 parent 993b181 commit 759e4be

File tree

2 files changed

+102
-90
lines changed

2 files changed

+102
-90
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
using System.Collections.Generic;
2+
3+
namespace BinaryObjectScanner.Protection
4+
{
5+
public partial class SecuROM
6+
{
7+
/// <summary>
8+
/// Matches hash of the Release Control-encrypted executable to known hashes
9+
/// </summary>
10+
/// <remarks>Allegedly, some version of Runaway: A Twist of Fate has RC</remarks>
11+
private static readonly Dictionary<string, string> MatroschkaHashDictionary = new()
12+
{
13+
{"C6DFF6B08EE126893840E107FD4EC9F6", "Alice - Madness Returns (USA)+(Europe)"},
14+
{"890C4DBDB7819D1FC73FE2105CED79FA", "Alice - Madness Returns (Steam v0)"},
15+
{"5D785311E052C6B9F2C4B1A0022BBEF7", "Alice - Madness Returns (Unknown Variant)"}, // Not sure where the RC executable came from
16+
{"D7703D32B72185358D58448B235BD55E", "Arcania - Gothic 4 (Australia)"}, // International version (English, French, Italian, German, Spanish)
17+
{"D6D6F97F99EC02A9DB4FCDE841C94726", "Arcania - Gothic 4 (Poland)"}, // Possibly Poland, Hungary?
18+
{"83CD6225899C08422F860095962287A5", "Arcania - Gothic 4 (Russia)"},
19+
// Arcania - Gothic 4 - Chinese - known to most likely exist. Likely matches support site exe.
20+
{"FAF6DD75DDB335101CB77A714793DC28", "Batman - Arkham City - Game of the Year Edition (UK)"},
21+
{"77999579EE4378BDFAC9438CC9CDB44E", "Batman - Arkham City (USA)+(Europe)"},
22+
{"73114CF3DEEDD0FA2BF52ACB70B048BC", "Battlefield - Bad Company 2 (GFWM)"},
23+
{"56C23D930F885BA5BF026FEABFC31856", "Battlefield 3 (USA)+(Europe, Asia)"},
24+
{"631C0ACE596722488E3393BD1AFCE731", "Battlefield 3 (Russia)"},
25+
{"6E481CDEBDB30B8889340CEC3300C931", "Battlefield 3 (UK)"},
26+
{"3963DD473C6659DB9D8F4452E6C37554", "Battlefield 3 (Unknown Variant)"}, // Not sure where the RC executable came from
27+
{"C5AB3931A3CBB0141CC5A4638C391F4F", "BioShock 2 (Argentina)+(Europe, Australia)+(Europe)+(Europe) (Alt)+(Netherlands)+(USA) - Multiplayer executable"},
28+
{"73DB35419A651CB69E78A641BBC88A4C", "BioShock 2 (Argentina)+(Europe, Australia)+(Europe)+(Europe) (Alt)+(Netherlands)+(USA) - Singleplayer executable"},
29+
{"E5D63D369023A1D1074E7B13952FA0F2", "BioShock 2 (Russia) - Multiplayer executable"},
30+
{"C39F3BCB74EA8E1215D39AC308F64229", "BioShock 2 (Russia) - Singleplayer executable"},
31+
{"3C340B2D4DA25039C136FEE1DC2DDE17", "Borderlands (USA)+(Europe) (En,Fr,De,Es,It)"},
32+
{"D35122E0E3F7B35C98BEFD706C260F83", "Crysis Warhead (Europe)+(Russia)+(USA)+(USA) (Alt)"},
33+
{"D9254D3353AB229806A806FCFCEABDBD", "Crysis Warhead (Japan)"},
34+
{"D69798C9198A6DB6A265833B350AC544", "Crysis Warhead (Turkey)"},
35+
{"9F574D56F1A4D7847C6A258DC2AF61A5", "Crysis Wars (Europe)+(Japan)+(Russia)+(Turkey)+(USA)+(USA) (Rerelease)"},
36+
{"C200ABC342A56829A5356AA0BEA5F2DF", "Dead Space 2 (Europe)+(Russia)+(USA)"},
37+
{"81B3415AF21C8691A1CD55A422BA64D5", "Disney TRON - Evolution (Europe) (En,Fr,De,Es,It,Nl)"},
38+
{"DF9609EDE95A1F89F7A39A08778CC3B8", "Disney Tron - Evolution (Europe) (Pl,Cs)"},
39+
{"B8698C7C05D7F9E049DC038B9868FCF7", "Disney TRON - Evolution (Russia) (En,Ru)"},
40+
{"0D5800F94643633CD3F025CFFD968DF2", "Dragon Age II (Europe)+(USA) - PC executable"},
41+
{"3F1AFA4783F9001AACF0379A2A432A13", "Dragon Age II (Europe)+(USA) - Mac executable"},
42+
{"530A3EB454570EEE5519ABE6BAE0187C", "Far Cry 2 (Europe)+(USA) (En,Fr,De,Es,It)"},
43+
{"4B3B130A70F3711BFA8AF06195FE4250", "FIFA 12 (Europe)"},
44+
{"D079D0302824335AF1D1AB0465267948", "FIFA 12 (Unknown Variant)"}, // Not sure where the RC executable came from
45+
{"F43F777696B0FAD3A331298C48104B31", "FIFA 13 (Europe)"},
46+
{"1DF0E096068839C12E4B353AC50E41FA", "Grand Theft Auto - Episodes from Liberty City (Russia)"},
47+
{"F3ADC6D08BEC42FB988F2F62B5C731FA", "Grand Theft Auto - Episodes from Liberty City (USA)"},
48+
{"5B90D42A650A8F08095984AEE3D961B9", "Grand Theft Auto IV (Europe, Asia)+(Europe)+(Latin America)+(USA) (Rev 1)"},
49+
{"4510F0BDD58D30D072952E225E294F9B", "Grand Theft Auto IV (USA)"},
50+
{"2AC9616A7FE46D142F653D798EAA07FD", "Harry Potter and the Deathly Hallows Part 2 (GFWM)"},
51+
{"AE144755FB12062780E4E4CCD29B5296", "Kingdoms of Amalur - Reckoning (Germany)"},
52+
{"6E4AB6416D91F85954150BC50D02688E", "Kingdoms of Amalur - Reckoning (USA) (En,Fr,Es,It,Nl)"},
53+
{"935103B1600F1C743AF892A0DD761913", "Mass Effect 2 (GFWM)"},
54+
{"EEB2AE163AEEF6BE54C5A9BDD38C600E", "Mass Effect 3 (Europe, Australia)+(USA)"},
55+
{"2D08B73217B722A4F9E01523F07E118E", "Mass Effect 3 (UK)"},
56+
{"4EA3CE0670DECD0A74FA312714C22025", "Need for Speed - The Run (Europe)"},
57+
{"88AB0D4A4EE7867F740AD063400FCDB5", "Need for Speed - The Run (Russia)"},
58+
{"EAD8E224D0F44706BA92BD9B27FEBA7D", "Need for Speed - The Run (USA)"},
59+
{"90919AAA29AC678D49FB2BEDC6B795EF", "Need for Speed - The Run (Unknown Alt)"}, // Not sure where the RC executable came from
60+
{"316FF217BD129F9EEBD05A321A8FBE60", "Syndicate (USA)+(Europe) (En,Fr,De,Es,It,Ru)"},
61+
};
62+
63+
/// <summary>
64+
/// If hash isn't currently known, check size and pathname of the encrypted executable
65+
/// to determine if alt or entirely missing
66+
/// </summary>
67+
private static readonly Dictionary<uint, string> MatroschkaSizeFilenameDictionary = new()
68+
{
69+
{4646091, "hp8.aec"},
70+
{5124592, "output\\LaunchGTAIV.aec"},
71+
{5445032, "output\\Crysis.aec"},
72+
{5531004, "output\\FarCry2.aec"},
73+
{6716108, "LaunchEFLC.aec"},
74+
{6728396, "./Bioshock2Launcher.aec"},
75+
{6732492, "./BioShock2Launcher.aec"},
76+
{7150283, "GridGameLauncher.aec"},
77+
{7154379, "GridGameLauncher.aec"},
78+
{8705763, "temp0.aec"},
79+
{12137051, "dragonage2.aec"},
80+
{12896904, "output\\crysis.aec"},
81+
{12917384, "output\\crysis.aec"},
82+
{12925576, "output\\crysis.aec"},
83+
{16415836, "output\\MassEffect2.aec"},
84+
{17199339, "AliceMadnessReturns.aec"},
85+
{22357747, "MassEffect3.aec"},
86+
{23069931, "fifa.aec"},
87+
{25409907, "Arcania.aec"},
88+
{25410419, "Arcania.aec"},
89+
{25823091, "Arcania.aec"},
90+
{27564780, "output\\BFBC2Game.aec"},
91+
{30470419, "temp0.aec"},
92+
{32920811, "temp0.aec"},
93+
{35317996, "output\\ShippingPC-WillowGame-SecuROM.aec"},
94+
{35610875, "temp0.aec"},
95+
{37988075, "temp0.aec"},
96+
{43612419, "BatmanAC.aec"},
97+
{45211355, "BatmanAC.aec"},
98+
{48093043, "deadspace_f.aec"},
99+
};
100+
}
101+
}

BinaryObjectScanner/Protection/SecuROM.cs

Lines changed: 1 addition & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -14,97 +14,8 @@ namespace BinaryObjectScanner.Protection
1414
{
1515
// TODO: Investigate SecuROM for Macintosh
1616
// TODO: Think of a way to detect dfe
17-
public class SecuROM : IDiskImageCheck<ISO9660>, IExecutableCheck<PortableExecutable>, IPathCheck
17+
public partial class SecuROM : IDiskImageCheck<ISO9660>, IExecutableCheck<PortableExecutable>, IPathCheck
1818
{
19-
/// <summary>
20-
/// Matches hash of the Release Control-encrypted executable to known hashes
21-
/// </summary>
22-
/// <remarks>Allegedly, some version of Runaway: A Twist of Fate has RC</remarks>
23-
private static readonly Dictionary<string, string> MatroschkaHashDictionary = new()
24-
{
25-
{"C6DFF6B08EE126893840E107FD4EC9F6", "Alice - Madness Returns (USA)+(Europe)"},
26-
{"890C4DBDB7819D1FC73FE2105CED79FA", "Alice - Madness Returns (Steam v0)"},
27-
{"D7703D32B72185358D58448B235BD55E", "Arcania - Gothic 4 (Australia)"}, // International version (English, French, Italian, German, Spanish)
28-
// Arcania - Gothic 4 - Polish(/Hungarian?) - known to most likely exist. Likely matches support site exe.
29-
{"83CD6225899C08422F860095962287A5", "Arcania - Gothic 4 (Russia)"},
30-
// Arcania - Gothic 4 - Chinese - known to most likely exist. Likely matches support site exe.
31-
{"FAF6DD75DDB335101CB77A714793DC28", "Batman - Arkham City - Game of the Year Edition (UK)"},
32-
{"77999579EE4378BDFAC9438CC9CDB44E", "Batman - Arkham City (USA)+(Europe)"},
33-
{"73114CF3DEEDD0FA2BF52ACB70B048BC", "Battlefield - Bad Company 2 (GFWM)"},
34-
{"56C23D930F885BA5BF026FEABFC31856", "Battlefield 3 (USA)+(Europe, Asia)"},
35-
{"631C0ACE596722488E3393BD1AFCE731", "Battlefield 3 (Russia)"},
36-
{"6E481CDEBDB30B8889340CEC3300C931", "Battlefield 3 (UK)"},
37-
{"C5AB3931A3CBB0141CC5A4638C391F4F", "BioShock 2 (Argentina)+(Europe, Australia)+(Europe)+(Europe) (Alt)+(Netherlands)+(USA) - Multiplayer executable"},
38-
{"73DB35419A651CB69E78A641BBC88A4C", "BioShock 2 (Argentina)+(Europe, Australia)+(Europe)+(Europe) (Alt)+(Netherlands)+(USA) - Singleplayer executable"},
39-
{"E5D63D369023A1D1074E7B13952FA0F2", "BioShock 2 (Russia) - Multiplayer executable"},
40-
{"C39F3BCB74EA8E1215D39AC308F64229", "BioShock 2 (Russia) - Singleplayer executable"},
41-
{"3C340B2D4DA25039C136FEE1DC2DDE17", "Borderlands (USA)+(Europe) (En,Fr,De,Es,It)"},
42-
{"D35122E0E3F7B35C98BEFD706C260F83", "Crysis Warhead (Europe)+(Russia)+(USA)+(USA) (Alt)"},
43-
{"D9254D3353AB229806A806FCFCEABDBD", "Crysis Warhead (Japan)"},
44-
{"D69798C9198A6DB6A265833B350AC544", "Crysis Warhead (Turkey)"},
45-
{"9F574D56F1A4D7847C6A258DC2AF61A5", "Crysis Wars (Europe)+(Japan)+(Russia)+(Turkey)+(USA)+(USA) (Rerelease)"},
46-
{"C200ABC342A56829A5356AA0BEA5F2DF", "Dead Space 2 (Europe)+(Russia)+(USA)"},
47-
{"81B3415AF21C8691A1CD55A422BA64D5", "Disney TRON - Evolution (Europe) (En,Fr,De,Es,It,Nl)"},
48-
{"DF9609EDE95A1F89F7A39A08778CC3B8", "Disney Tron - Evolution (Europe) (Pl,Cs)"},
49-
{"B8698C7C05D7F9E049DC038B9868FCF7", "Disney TRON - Evolution (Russia) (En,Ru)"},
50-
{"0D5800F94643633CD3F025CFFD968DF2", "Dragon Age II (Europe)+(USA) - PC executable"},
51-
{"3F1AFA4783F9001AACF0379A2A432A13", "Dragon Age II (Europe)+(USA) - Mac executable"},
52-
{"530A3EB454570EEE5519ABE6BAE0187C", "Far Cry 2 (Europe)+(USA) (En,Fr,De,Es,It)"},
53-
{"4B3B130A70F3711BFA8AF06195FE4250", "FIFA 12 (Europe)"},
54-
{"F43F777696B0FAD3A331298C48104B31", "FIFA 13 (Europe)"},
55-
{"1DF0E096068839C12E4B353AC50E41FA", "Grand Theft Auto - Episodes from Liberty City (Russia)"},
56-
{"F3ADC6D08BEC42FB988F2F62B5C731FA", "Grand Theft Auto - Episodes from Liberty City (USA)"},
57-
{"5B90D42A650A8F08095984AEE3D961B9", "Grand Theft Auto IV (Europe, Asia)+(Europe)+(Latin America)+(USA) (Rev 1)"},
58-
{"4510F0BDD58D30D072952E225E294F9B", "Grand Theft Auto IV (USA)"},
59-
{"2AC9616A7FE46D142F653D798EAA07FD", "Harry Potter and the Deathly Hallows Part 2 (GFWM)"},
60-
{"AE144755FB12062780E4E4CCD29B5296", "Kingdoms of Amalur - Reckoning (Germany)"},
61-
{"6E4AB6416D91F85954150BC50D02688E", "Kingdoms of Amalur - Reckoning (USA) (En,Fr,Es,It,Nl)"},
62-
{"935103B1600F1C743AF892A0DD761913", "Mass Effect 2 (GFWM)"},
63-
{"EEB2AE163AEEF6BE54C5A9BDD38C600E", "Mass Effect 3 (Europe, Australia)+(USA)"},
64-
{"2D08B73217B722A4F9E01523F07E118E", "Mass Effect 3 (UK)"},
65-
{"4EA3CE0670DECD0A74FA312714C22025", "Need for Speed - The Run (Europe)"},
66-
{"88AB0D4A4EE7867F740AD063400FCDB5", "Need for Speed - The Run (Russia)"},
67-
{"EAD8E224D0F44706BA92BD9B27FEBA7D", "Need for Speed - The Run (USA)"},
68-
{"316FF217BD129F9EEBD05A321A8FBE60", "Syndicate (USA)+(Europe) (En,Fr,De,Es,It,Ru)"},
69-
};
70-
71-
/// <summary>
72-
/// If hash isn't currently known, check size and pathname of the encrypted executable
73-
/// to determine if alt or entirely missing
74-
/// </summary>
75-
private static readonly Dictionary<uint, string> MatroschkaSizeFilenameDictionary = new()
76-
{
77-
{4646091, "hp8.aec"},
78-
{5124592, "output\\LaunchGTAIV.aec"},
79-
{5445032, "output\\Crysis.aec"},
80-
{5531004, "output\\FarCry2.aec"},
81-
{6716108, "LaunchEFLC.aec"},
82-
{6728396, "./Bioshock2Launcher.aec"},
83-
{6732492, "./BioShock2Launcher.aec"},
84-
{7150283, "GridGameLauncher.aec"},
85-
{7154379, "GridGameLauncher.aec"},
86-
{8705763, "temp0.aec"},
87-
{12137051, "dragonage2.aec"},
88-
{12896904, "output\\crysis.aec"},
89-
{12917384, "output\\crysis.aec"},
90-
{12925576, "output\\crysis.aec"},
91-
{16415836, "output\\MassEffect2.aec"},
92-
{17199339, "AliceMadnessReturns.aec"},
93-
{22357747, "MassEffect3.aec"},
94-
{23069931, "fifa.aec"},
95-
{25410419, "Arcania.aec"},
96-
{25823091, "Arcania.aec"},
97-
{27564780, "output\\BFBC2Game.aec"},
98-
{30470419, "temp0.aec"},
99-
{32920811, "temp0.aec"},
100-
{35317996, "output\\ShippingPC-WillowGame-SecuROM.aec"},
101-
{35610875, "temp0.aec"},
102-
{37988075, "temp0.aec"},
103-
{43612419, "BatmanAC.aec"},
104-
{45211355, "BatmanAC.aec"},
105-
{48093043, "deadspace_f.aec"},
106-
};
107-
10819
/// <inheritdoc/>
10920
public string? CheckDiskImage(string file, ISO9660 diskImage, bool includeDebug)
11021
{

0 commit comments

Comments
 (0)