Programm vor Hex-Editor Änderungen schützen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Requester
User
Beiträge: 26
Registriert: Samstag 10. Mai 2008, 21:59

Ich hab da mal wieder eine Frage. Irgend so ein Witzbold hat mit einem Hex-Editor den Programm Namen und die Copyright Hinweise entfernt. Nach kurzem testen hab ich gemerkt das man kinderleicht mit dem Hex-Editor sämtliche Texte innerhalb meines Programmes ändern kann.

Meine Idee um das zu schützen wären Programm interne Abfragen. Hat da jemand eine Idee was man Abfragen könnte bzw. woran man erkennt das da jemand mit dem Hex-Editor rumgefummelt hat?

Von Java kenn ich das mit einer Checksum, sowas müsste bei Python ja eigentlich auch gehen.

Danke schonmal und bitte jetzt keine Diskussionen über "Warum ich Open-Source arbeiten soll...".

Gruß

Requester
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Requester hat geschrieben:Von Java kenn ich das mit einer Checksum, sowas müsste bei Python ja eigentlich auch gehen.
Geht doch auch, ich sehe dein Problem nicht. Aber auch Checksummen kann man umgehen indem man entweder die Checksumme mitändert oder einfach den Check deaktiviert.
Requester hat geschrieben:Danke schonmal und bitte jetzt keine Diskussionen über "Warum ich Open-Source arbeiten soll...".
Wäre aber sicherlich keine schlechte Idee.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Requester hat geschrieben:Danke schonmal und bitte jetzt keine Diskussionen über "Warum ich Open-Source arbeiten soll...".
Auch beim Weiterverarbeiten von Freier Software ist es ein Verstoß gegen das Copyright, einfach den Hinweis auf Autoren zu löschen. Einzige Ausnahme sind Werke, die tatsächlich unter Public Domain stehen.
lunar

Requester hat geschrieben:Ich hab da mal wieder eine Frage. Irgend so ein Witzbold hat mit einem Hex-Editor den Programm Namen und die Copyright Hinweise entfernt. Nach kurzem testen hab ich gemerkt das man kinderleicht mit dem Hex-Editor sämtliche Texte innerhalb meines Programmes ändern kann.
Ist das ein py2exe Script oder ähnliches?
Meine Idee um das zu schützen wären Programm interne Abfragen. Hat da jemand eine Idee was man Abfragen könnte bzw. woran man erkennt das da jemand mit dem Hex-Editor rumgefummelt hat?
Gar nicht. Wenn man die Strings verändern kann, dann kann man auch die Logik zur Überprüfung verändern ...
Von Java kenn ich das mit einer Checksum, sowas müsste bei Python ja eigentlich auch gehen.
Nein, es geht noch nicht mal bei Java. Mit den richtigen Tools findet man auch raus, wie der Hash überprüft wird und wo er abgelegt ist. Folglich kann man auch den Hash fälschen.
Danke schonmal und bitte jetzt keine Diskussionen über "Warum ich Open-Source arbeiten soll...".
Wenn dir dein geistiges Eigentum so viel Wert ist, dann geh für Gericht ...
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Natürlich haben alle Recht: Gegen einen ausdauernden Cracker wird man Manipulationen eines Programms nicht verhindern können. Man kann aber einem Crack-Kiddie, das nur mit einem Editor Text ändern kann, das Leben etwas erschweren. Wie Leonidas schon richtig bemerkte, kann man das in Python auch mit Checksums machen. Z.B. könnte man beim Programmablauf eine vorher vom Originaltext berechnete CRC, MD5 o.ä. überprüfen:

Code: Alles auswählen

import binascii
text = 'Testtext'
if binascii.crc32(text) != -152371028:
    print 'Gepatcht'
else:
    print 'Original'
MfG
HWK
lunar

mkallas hat geschrieben:
Requester hat geschrieben:Danke schonmal und bitte jetzt keine Diskussionen über "Warum ich Open-Source arbeiten soll...".
Auch beim Weiterverarbeiten von Freier Software ist es ein Verstoß gegen das Copyright, einfach den Hinweis auf Autoren zu löschen. Einzige Ausnahme sind Werke, die tatsächlich unter Public Domain stehen.
Oder unter der WTFPL ;)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Wenn du nicht möchtest, dass dein Programm verändert wird, führe es nur in einer (relativ) sicheren Umgebung (Stichwort trusted computing architecture) aus wie z.B. der XBox 360, PS3 oder einem Handy mit OMA DRM 2.x ;) Derartige Plattformen lassen normale Anwender gar nicht auf den Programmcode zugreifen und er wird in der Regel nur verschlüsselt übertragen.

Eine andere Möglichkeit wäre, wenn sich das Programm beim Start selbst prüft, indem etwa eine kryptografisch sichere Prüfsumme (MD5, SHA1, ...) übermittelt wird. Leider kann ein böser Mensch auch diesen Selbsttest genauso verändern, wie er Texte verändern kann.

Selbst Skype, welches sich mit mehreren Schichten wirklich extrem trickreich gegen Veränderungen zu schützen versucht, damit niemand ermitteln kann, wie das Protokoll funktioniert, wurde letztlich überwunden.

Einen besseren Schutz bietet "trusted hardware", aber auch bei der XBox 360 (genau wie bei deren Vorgänger) hat's letztlich nicht 100% geholfen. Wie der Stand bei der PS3 ist, kann ich nicht sagen. Bei Handys mag einfach das Interesse fehlen. Der OMA DRM 2.0 Standard ist allerdings so kompliziert, dass ich sehr stark vermute, dass es da die üblichen Buffer-Overruns und andere Fehler in den jeweiligen Modellen gibt, sodass man da auch an die unverschlüsselten Inhalte irgendwie kommen kann. Letztlich müsste der Schutz bis zur SIM-Karte gehen, was glaube ich nicht alle Modelle haben sondern ihn nur in Software realisieren.

Wie auch immer, zwei-drei im Code versteckte Tests auf Veränderungen inklusive eines "Honey pots", also einer Stelle, die zur Veränderung einlädt, aber wenn man's tut, dies erkannt wird, könnten den normalen Hacker schon abhalten.

Stefan
lunar

sma hat geschrieben:Wie auch immer, zwei-drei im Code versteckte Tests auf Veränderungen inklusive eines "Honey pots", also einer Stelle, die zur Veränderung einlädt, aber wenn man's tut, dies erkannt wird, könnten den normalen Hacker schon abhalten.
Höchstens den normalen Volltrottel, der sich daran versucht. Für einen erfahrenen Cracker reicht das nicht, das haben die Entwickler von Kopierschutz- und Keyverifikationsalgorithmen bei Spielen doch schon feststellen müssen ;)

Der beste Schutz, den das Programm des OP wohl genießt, ist die fehlende Relation von Aufwand und Erfolg: Ich bezweifele mal, dass das Programm des OP so sensationell ist, dass das cracken sich lohnen würde ... nichts für ungut, Requester ;)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Genau. Der beste Kopierschutz ist immer noch der, ein so schlechtes Produkt zu bauen, was einfach keiner haben will :)

Der zweitbeste ist aber, und das wollte ich in (zu) vielen Worten sagen, ist die Hardware zu kontrollieren. Alles andere ist ein Wettrüsten.

Stefan
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

sma hat geschrieben:Genau. Der beste Kopierschutz ist immer noch der, ein so schlechtes Produkt zu bauen, was einfach keiner haben will :)
Joa. Das funktioniert.
Der zweitbeste ist aber, und das wollte ich in (zu) vielen Worten sagen, ist die Hardware zu kontrollieren. Alles andere ist ein Wettrüsten.
Da musst du aber die komplette Hardware kontrollieren. Diese Dongles verärgern nur die User.

Oder du machst einfach ein gutes Produkt. Dann ist der Rest schon egal.
TUFKAB – the user formerly known as blackbird
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

mitsuhiko hat geschrieben:
Der zweitbeste ist aber, und das wollte ich in (zu) vielen Worten sagen, ist die Hardware zu kontrollieren. Alles andere ist ein Wettrüsten.
Da musst du aber die komplette Hardware kontrollieren. Diese Dongles verärgern nur die User.
Och, das ist den Usern egal -- gerade von kommerzieller Software lassen sie sich oft mit einer geradezu masochistisch-fatalistischen Einstellung verärgern (es kostet Geld, also wirds schon richtig so sein.)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
lunar

mitsuhiko hat geschrieben:
Der zweitbeste ist aber, und das wollte ich in (zu) vielen Worten sagen, ist die Hardware zu kontrollieren. Alles andere ist ein Wettrüsten.
Da musst du aber die komplette Hardware kontrollieren. Diese Dongles verärgern nur die User.
Frag doch mal die Nutzer von Xbox oder Wii. Denen ist völlig egal, dass deren Systeme nichts anderes ausführen können als offiziell signierten Code, solange sie happy mit ihren Controllern in der Luft rumwedeln können ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

lunar hat geschrieben:Denen ist völlig egal, dass deren Systeme nichts anderes ausführen können als offiziell signierten Code, solange sie happy mit ihren Controllern in der Luft rumwedeln können ;)
Grad Wii-Hacking war für die Leute die sich damit beschäftigt haben recht trivial, da sie im großen und ganzen die gleichen Mechanismen genutzt haben wie der Gamecube. Da gabs eine Präsentation dazu auf dem 23 oder 24C3, die war echt eines der Highlights.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten