Unmögliche Aufgabe?

Für allgemeine Fragen zur Programmierung mit PureBasic.
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Re: Unmögliche Aufgabe?

Beitrag von ¯\_(ツ)_/¯ »

Ups lesen in der Hilfe hilft. :D Danke Herr Lord mein Lord! :)
Bild
Benutzeravatar
Dadido3
Beiträge: 103
Registriert: 24.02.2007 22:15
Kontaktdaten:

Re: Unmögliche Aufgabe?

Beitrag von Dadido3 »

¯\_(ツ)_/¯ hat geschrieben:Nur der einzige Nachteil ist dass es trotzdem unsicher ist weil der Cracker könnte den Inhalt meiner Exe
verändern und die CHecksumme am Ende nur anpassen und so glaubt mein Programm es sei nichts verändert worden.
Ich hatte am Anfang erst gedacht, es gehe einfach um ein Gedankenexperiment. Falls du wirklich versuchst deine Anwendung gegen >absichtliche< Veränderungen zu schützen, dann bist du auf dem falschen Weg. Jemand, der deine Anwendung verändern kann/will, wird einfach den Schutz abschalten. Da macht es auch keinen Unterschied ob die Checksumme in den zu hashenden Daten liegt, außerhalb davon oder übers Internet abgefragt wird. Es ist ziemlich einfach die entsprechende Stelle zu finden, und den Schutz abzuschalten (In den meisten Fällen reicht es ein einziges Byte zu verändern).

Und wenn ich sage, dass du auf dem falschen Weg bist, heißt das nicht, dass es den richtigen Weg gibt. Mit viel Aufwand kann man eventuell den Cracker verlangsamen, aber auf keinen Fall aufhalten. Außerdem kann ein aufwendiger Schutz eventuell zu Problemen bei legitimen Anwendern führen. Steck den Mehraufwand lieber in die Entwicklung deiner Software, die Chance etwas zu entwickeln was viele zahlende Nutzer anlockt steigen damit eher. Und falls das passiert, ist es egal ob du quasi 1000€, 10000€ oder 100000€ in den Schutz investierst, er wird geknackt werden.

Von daher ist diese Aufgabe unmöglich zu lösen, solange Endanwender über ihr eigenes System frei bestimmen können, und nicht in einem sogenannten goldenen Käfig sitzen.

Vor was willst du dein Programm genau schützen? Vor illegalen Kopien? Oder dass es für zwecke missbraucht wird, die du nicht zulassen willst? Oder aus einem anderen Grund? Eventuell kann man eine alternative Lösung finden.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Unmögliche Aufgabe?

Beitrag von NicTheQuick »

Als Schutz kann man das tatsächlich nicht verwenden, nur als Überprüfung, ob zum Beispiel der Download der Datei auch korrekt ist. Es schützt natürlich auch nicht vor illegalen Kopien der Software. Aber was du vorhast, ist vermutlich sicherzustellen, dass keiner deine Software verändert, sodass zum Beispiel ein Spiel nicht manipuliert werden kann und es dem Spieler so Vorteile verschafft.

Du kannst es ihm schwerer machen, indem du bestimmte Interna wie zum Beispiel Variablen verschlüsselst und vor allem Speicherbereiche dynamisch allozierst, sodass sie nie an der selben Stelle im Programm zu finden sind. So kann man vielleicht ein paar Skriptkiddies abhalten, aber natürlich keine professionelleren Hacker. Du siehst es ja schon an den großen Spielen heutzutage, die es auch alle nicht schaffen einen verlässlichen Schutz zu bieten. Irgendwann kommt immer einer dahinter. Also ist es fast egal wieviel Geld und Zeit du in die Hand nimmst. Sicher ist das Spielverhalten nur, wenn es von einem Server, der nur in deiner Gewalt steht, bestimmt wird. Aber dann braucht man natürlich einen Online-Zwang.
Bild
fabulouspaul
Beiträge: 120
Registriert: 01.04.2011 21:59

Re: Unmögliche Aufgabe?

Beitrag von fabulouspaul »

...ich hätte noch eine Idee, die aber vermutlich am Ziel vorbeigeht:

Du könntest dein eigentliches Programm packen & verschlüsseln und in ein ganz einfaches Programm als Binary integrieren.
Beim Start entpackt und entschlüsselt das einfache Programm Dein Programm, überprüft meinetwegen auch noch auf einen Hashwert und startet es dann.
Die Programm"hülse" die entpackt und entschlüsselt hat kann danach bendet werden oder wartet auf das beenden des eigentlichen Programms und löscht dies dann.

Es gab auch mal irgendwo einen Thread mit einer Routine oder Library, die eine Exe direkt aus dem speicher startet...
Antworten