Kommentare zu folgendem Beitrag: Burgie’s Cozy Kitchen veräppelt die Nutzer der Raubkopie
Bei Burgie's Cozy Kitchen hat man sich etwas Besonderes einfallen lassen. Dabei startet das Spiel und verhält sich zunächst ganz normal.
Bei Burgie's Cozy Kitchen hat man sich etwas Besonderes einfallen lassen. Dabei startet das Spiel und verhält sich zunächst ganz normal.
Schade, dass man nie erfährt, wie solche Mechaniken Funktionieren.
Klar, wird niemand erzählen, sonst könnte man sie leichter deaktivieren,
aber es wäre schon interessant zu erfahren, wie diese 10 Abfragen erkennen, ob es ein Original ist.
mich würde mal interessieren wer ständig diese grottenschlechten cracker sind ![]()
Das Shareware Prinzip. War früher recht beliebt. Man konnte die Sachen in Ruhe antesten.
Jedes spiel auf steam „ohne“ drm wird heutzutage quasi nicht mehr wirklich gecrackt, wird steamless oder eine andere variante genommen die dann quasi steam_emu ist und schon läuft es
Bzw gibt es sicher noch die ein oder andere Group die ihre eigene Variante hat um den Steam Schutz zu umgehen.
Getestet wird da aber bei nur Steam DRM, meist nur noch ob das Spiel ohne Probleme startet und sich kurz spielen lässt.
Vielleicht mal hier ansetzen → Die Aussage des Dev ist ca. sieben Jahre her…
Leider glaube ich nicht, dass das passieren wird. Eine der wichtigsten Funktionen, um die ich das Spiel entwickelt habe, ist die Möglichkeit, es im Fenstermodus zu minimieren. Diese Funktion lässt sich aufgrund des Sicherheitssystems auf dem Mac nicht implementieren, und wenn ich sie entferne, könnte ich am Ende mehr verärgerte Spieler haben, als wenn ich sie von vornherein weggelassen hätte. Ich weiß, es klingt unfair, aber du weißt ja, wie das Internet so läuft. Tut mir leid.
Hilft mir aber nicht dabei, eine Erklärung zu bekommen, wie der „Kopierschutz“ Abgefragt wird.
Tatsächlich Interessieren mich solche Dinger schon immer.
War schon beim C64 so, der einfachste Kopierschutz war ein Read Error 21 absichtlich auf der Diskette zu platzieren.
Man fragte ab, ob der Fehler Existierte = Original, denn viele Kopierprogramme haben solche Fehler einfach „Korrigiert“ und er war auf der Kopie nicht mehr vorhanden.
In Zeiten von DRM ist so etwas aufgrund des Mangels an physischen Medien nicht mehr möglich. ![]()
Schon mal mit einem APKTool oder Decompiler versucht, die .apk wieder lesbar zu machen? Irgendwo im Code muss ja die magische Zahl von 3.600 Sekunden stehen. Es sei denn, der Entwickler war besonders fies und hat sie mit Algorithmen oder absichtlich verschachteltem Code versteckt.
Dazu muss man wohl diese Hardcodierung suchen und dann Zeile für Zeile den Code durchgehen. Um letztlich zu verstehen, wie der Kopierschutz funktioniert. Für mich persönlich wäre das aber zu viel Aufwand, weil ich keine Spiele entwickle, interessant bleibt es trotzdem.
Eine ausführbare Windows oder Linux Datei ist kein APK.
APK sind Android Programmpakete.
Und auch mal eben einen Timer von 3.600 Sekunden wird es dabei nicht geben, denn dann Speichere ich das Spiel ab, beende, und starte einfach neu.
Da muss schon mehr sein.
Aber selbst dann macht der Timer keinen Sinn, denn er muss ja erkennen, ob der Spieler das Spiel Regulär gekauft hat oder nicht.
Ein Simpler Timer würde bei jedem anschlagen.
Also muss vorher irgendwo die Kontrolle sein, und darum geht es mir ja.
Außerdem ist im Artikel von 10 verschiedenen Kontrolle im Spiel die rede.
Ein Simples „IF Spiel = Gekauft THEN Normal_Weiter“ wird es da nicht geben. ![]()
Dann ist es halt ein Windows-Spiel, aber das Vorgehen bleibt ähnlich. Den eigentlichen Code kann man anschauen, indem man ihn mit einem Disassembler oder ähnlichem wiederherstellt. Der Hintergrund mit den 3.600 Sekunden ist, dass das Spiel nach dieser Zeit in einen anderen Modus umschaltet. Also muss das irgendwo hardcodiert sein.
Somit geht man auf die Suche nach genau einer solchen Funktion oder einem Attribut, das diese Werte repräsentiert, und kann sich dann weiter tasten. Was daraus das Programm macht, so würde ich vorgehen, wenn es komplett unbekannter Code ist. In der Praxis würde man einen Debugger anwerfen oder anderes, und irgendwie kommt man dann doch darauf, wie er das mit der Cheat-Funktion umgesetzt hat.
Dann wäre es eher eine Zählschleife, ein Countdown-Timer oder ein Zeitstempel-Ansatz. So könnte das aussehen:
from datetime import datetime, timedelta
startzeit = datetime.now()
limit = startzeit + timedelta(seconds=3600)
while datetime.now() < limit:
# Hauptprogramm läuft weiter
pass
print("Zeit abgelaufen!")
Toller ChatGPT Code!
Das du vom Programmieren keine Ahnung hast, ist nicht schlimm.
Auch wird das Spiel vermutlich nicht in Python geschrieben sein.
Aber, wie schon beschrieben, der Timer interessiert mich nicht.
Und selbst wenn, macht er nach deinem Code keinen Sinn… Spiel beenden, neu starten und der Timer beginnt bei 0.
Dazu müsste der Zähler in der Registry oder auf der HD gespeichert werden, aber das ist zu einfach zu umgehen.
Auch einfach mal eben „Schnell“ nen Debugger anwerfen ist auch nicht mehr so einfach.
War es mal vor 20 Jahren, aber heutzutage nicht mehr.
Ich habe lange genug mit SoftIce und WinDasm gearbeitet, um das zu merken.
Aber, das sind alles nur Mutmaßungen und haben keinerlei Bezug zum eigentlichen Schutz.
Wenn du wirklich zeigen willst, wie man es besser macht, dann sag mir, in welchem Format dir das lieber ist. Vielleicht Pseudocode, PAP oder Strukturgramm? Nur kritisieren bringt niemanden weiter. Es war ja nur ein Beispiel, und ich kann es auch in C, C++ oder Assembler darstellen, wenn nötig.
Hier mal etwas was vielleicht du verstehst:
; Startzeit holen (via Syscall)
MOV R0, #GET_TIME_CMD ; Befehlsnummer für Zeitabfrage
SYSCALL ; Aufruf des Kernels
MOV R1, R0 ; R1 enthält jetzt Startzeit
ADD R2, R1, #3600 ; R2 = Limit (Start + 3600)
LOOP:
MOV R0, #GET_TIME_CMD
SYSCALL ; Aktuellen Status holen
MOV R3, R0 ; R3 = Aktuelle Zeit
CMP R3, R2 ; Vergleichen
JL LOOP ; Noch nicht reached? Weiter loop
PRINT "Zeit abgelaufen!"
HALT
Ist das jetzt genehmer und reagierst du dann weniger überheblich?
Hey ihr zwei, bitte weniger aggressiv oder keilt euch privat. Das hat mit dem Thema nur noch wenig gemeinsam.
Wie ich schon geschrieben habe, dein KI-Programmcode ist hier absolut fehl am Platz!
Selbst wenn du C64 Assembler generieren lässt.
Das ist nicht die Antwort auf meine Frage.
Und selbst wenn, programmiere ich mir den Code selber, und lasse ihn mir nicht von einer KI Generieren.
Lese dir einfach nochmal meine Frage durch. Dann verstehst du vielleicht, was ich wissen wollte.
@Ghandy
Ich bin absolut nicht aggressiv, sondern stelle nur eine einfache Frage zum Thema.
Da ist ein KI generierter Code über eine Timer-Funktion die falsche Antwort.
Danke für deine Antwort.
Das „Schweizer Taschenmesser“ sieht mir etwas nach dem RegMon aus.
Gibt es auch als FileMon (Hab da noch eine Version von 1998 im Einsatz.)
Sind die mittlerweile „Verboten“ ? Weil es den glaube ich mal ganz Legal und kostenlos gab. (www.sysinternals.com)
Aber zum Thema.
Ich könnte mir auch nur erklären, dass es irgendwie Verschlüsselte zugriffe auf Registry oder Festplatte gibt um das zu lösen.
Hätte mich eben einfach nur interessiert.
Edit
Es gibt mir nicht darum, das spiel nicht kaufen zu wollen…sofern ich es spielen wollen würde.
Mich interessieren vielmehr die Techniken hinter den Funktionen.
So lese ich auch immer wieder sehr aufmerksam die Berichte über Denuvo.
Ich denke „trial“ und „reset“ darf hier wohl in dieser Form genannt werden
- schönes altes tool. Was wohl PiD ausspucken würde ![]()
Python ist genauso gut geeignet zur Darstellung wie Pseudocode. ![]()
Davon ab werden Mechaniken in Spielen zunehmend in höheren Sprachen programmiert, weils einfach schneller geht.
Weil der Programmcode exponentiell gewachsen ist.
Glück hat man wenn man auf apk oder .net trifft. ![]()
Könnte eher Trial-Reset v4.x sein?!
![]()
Könnten wir bitte zurück zum eigentlichen Thema kommen, liebe Leute!??
Nur wissen alle: das kann auch bei legalen Käufen passieren. Ich sag nur Siedler 3, Schweinebug.
Soll nur bei Kopien anschlagen. Tats aber gefühlt bei jedem 2ten ders kaufte.