Wat is er dan mis met offline singleplayer? Zijn ze zo bang dat het gekopieerd wordt?
In het kort: ja.
Heel in het begin was beveiliging weinig meer dan "controleer of ik gekopieerd ben, zo ja sluit af, zo nee ga verder met het spel zelf". Maar ja, als een cracker dat ziet dan sloopt ie het begin eraf en laat ie alleen "verder met het spel zelf" over.
Daarna werd het "controleer of ik gekopieerd ben, zo nee, decrypt het spel zelf en start het op". Een programmeur die leesbare, onderhoudbare code schrijft (met andere woorden: een programmeur die er niet bij stilstaat dat zijn code aangevallen gaat worden door crackers) implementeert dat met "roep een functie aan die controleert of we gekopieerd zijn en kijk naar het resultaat van die functie". Een cracker die dat ziet hoeft alleen maar te kijken welke waarde wordt teruggegeven voor "we zijn niet gekopieerd" en vervangt de functie door code die zonder nadenken die waarde teruggeeft. Dan hoeft ie niet eens te weten hoe de code van het spel zelf versleuteld is, want hij hoeft zelf niets te ontsleutelen, dat doet de beveiligingscode mooi zelf.
Er zijn sindsdien veel ingewikkeldere methoden bedacht, maar een heel groot deel daarvan waren pogingen om het reverse engineeren van wat er precies gebeurt zo moeilijk mogelijk te maken. Bijvoorbeeld door die "zijn we gekopieerd?" functie te laten controleren of er een debugger aanwezig is (die probeert te onderscheppen welke waarde wordt teruggegeven). Maar uiteindelijk is alle data lokaal beschikbaar en heb je vroeg of laat ergens in het geheugen de ontsleutelde code staan. Bovendien kun je eindeloos testen, want de beveiliging kan nergens opslaan dat ie nu al voor de honderdste keer gedraaid wordt en dat dat toch wel heel erg verdacht is; de cracker kan immers de virtual machine na elke test resetten. Met behulp van always online kun je dat probleem oplossen: heel simpel gezegd kun je het spel versleutelen met een sleutel die niet is meegeleverd; die krijg je van de server als ie overtuigd is dat je het spel niet gekopieerd hebt. En als die server honderden verzoeken achter elkaar krijgt van hetzelfde serienummer, dan kan ie besluiten dat ie het niet meer vertrouwt en voortaan altijd "val maar omhoog" teruggeven,
zelfs als de controle eigenlijk wel geslaagd zou zijn.
Degene die de controle heeft over de hardware (in een pc is dat altijd
*) de eigenaar) heeft uiteindelijk (als beide partijen de trukendoos helemaal open trekken) de controle over wat die hardware doet. Als een uitgever jou een spel verkoopt wat puur en alleen op jouw computer draait, dan kunnen ze zoveel klooien met rootkits en andere DRM onzin als ze willen; als jij echt goed weet waar je mee bezig bent, dan kun je altijd een crack vinden.
Bovenstaande geeft overigens geen mening over of dat goed of slecht is, simpelweg dat het in de praktijk nou eenmaal zo is.
*) Er zijn een paar heel beperkte uitzonderingen. Eentje is een TPM module, daar kun je rare trucjes mee uithalen (of jij op dat moment nog degene bent "die controle heeft over (dat deel van) de hardware" is een interessante discussie. Een andere uitzondering zijn hardware dongles... maar goed, die worden geleverd door de uitgever van de software, dus kun je echt zeggen dat je daar de controle over hebt (tenzij je ze openmaakt en je soldeerbout pakt)?
[Reactie gewijzigd door robvanwijk op 24 juli 2024 00:14]