Narf! Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Hallo an alle, wie kann ich verhindern, dass böse Jungs (oder Mädels) ein Programm (*.exe)wieder in den Quellcode zurück übersetzten? Kann zur Laufzeit des Programms erkannt werden, ob da was "umgeleitet" wird? Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Rückübersetzung (in dem beschränkten Maße, wie es bei C und C++ möglich ist), würde nicht zur Laufzeit stattfinden, dagegen kann sich dein Programm also gar nicht schützen. Je nach Betriebssystem gibt es z.B. Möglichkeiten, zu erkennen, ob an deinem Programm ein Debugger hängt. Einen sicheren Schutz gibt es aber nicht. Zitieren
Narf! Geschrieben 30. Januar 2006 Autor Geschrieben 30. Januar 2006 (in dem beschränkten Maße, wie es bei C und C++ möglich ist) Was bedeutet das genau? Zitieren
Klotzkopp Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 Das Vorhaben, aus einem compilierten Programm wieder C oder C++-Quellcode zu machen, wird oft mit dem Vorhaben verglichen, aus einem Hamburger wieder eine Kuh zu machen. Beim Compilieren geht nun mal ein großer Teil der Informationen im Quellcode verloren. Es ist nur mit sehr guter Kenntnis des Compilers möglich, überhaupt etwas daraus zu machen, das auch nur halbwegs an von Menschen geschriebenen Code erinnert. Variablen- und Funktionsnamen sind auf jeden Fall weg. Zitieren
Bubble Geschrieben 30. Januar 2006 Geschrieben 30. Januar 2006 wie kann ich verhindern, dass böse Jungs (oder Mädels) ein Programm (*.exe)wieder in den Quellcode zurück übersetzten? Wer das unbedingt will schafft das eh. Wer zu viel Zeit und sonst nichts zu tun auch. Spaar Dir Deine Zeit und lass das. Es gibt gar nicht so viel Know-How in normalen Programmen, als das es nicht jemand anderes auch umsetzen könnte. Ansonsten: EXE-Packer sind ein gewisses Hindernis, da der Code erst in den Speicher entpackt werden muss, um ihn analysieren zu können. Ansonsten gibt es noch einige Tricks, aber das ist eh alles "Security through obscurity". Such im Web nach ein paar Beispielen, Du wirst sicher fündig. Es garantiert Dir aber auch niemand, dass solche Tricks auch noch in jedem Fall mit dem über-übernächsten OS funktionieren und Dein Programm noch startet. Wenn Du wirklich sicher gehen willst, dass niemand Dein Programm untersucht (warum auch immer...): Gib es nicht weiter! Zitieren
Narf! Geschrieben 31. Januar 2006 Autor Geschrieben 31. Januar 2006 Wenn Du wirklich sicher gehen willst, dass niemand Dein Programm untersucht (warum auch immer...): Gib es nicht weiter! Ich schreibe das Programm nicht für mich zu Hause und: Man lässt sich nicht gern in die Karten schauen. :cool: Zitieren
Bubble Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 Ich schreibe das Programm nicht für mich zu Hause und: Ja und? Dann musst Du halt auch die Rechner unter Kontrolle halten, auf denen es läuft. Software als Service sozusagen. Man lässt sich nicht gern in die Karten schauen. :cool: Man kann es aber auch übertreiben. Zitieren
Guybrush Threepwood Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 Außerdem bezweifle ich das das Programm irgendetwas beinhaltet was niemand anderes auch machen könnte ohne das zu "decompilieren" Zitieren
Bubble Geschrieben 31. Januar 2006 Geschrieben 31. Januar 2006 Außerdem bezweifle ich das das Programm irgendetwas beinhaltet was niemand anderes auch machen könnte ohne das zu "decompilieren" Ganz meine Meinung Zitieren
Narf! Geschrieben 1. Februar 2006 Autor Geschrieben 1. Februar 2006 Außerdem bezweifle ich das das Programm irgendetwas beinhaltet was niemand anderes auch machen könnte ohne das zu "decompilieren" Das ist schon richtig. Vielleicht bin ich da auch etwas eigen. Zitieren
Whatever Geschrieben 1. Februar 2006 Geschrieben 1. Februar 2006 Sie es mal so: Damit dein Programm lauffähig ist, muss der Prozessor es ausführen können. Damit er es ausführen kann, muss es korrekter Bytecode sein. Wenn es korrekter Bytecode ist, kann man es disassemblieren. (*) Kann man es disassemblieren, kann man (wenn man weiß was man tut) die interna das Programms sehen. *: Jedem Assembler-Befehl ist exakt ein CPU-Kommando zugeordnet (und umgekehrt). Daher kann man es aus Bytecode immer ASM erstellen. Dein Programm wieder in C zu verwandeln wäre zwar durchaus möglich, allerdings würde das niemand tun. Das ist so als würdest du aus einem Hamburger nicht nur die Kuh wiederherstellen, sondern die Mutter des Hamburgerlieferanten. Schon beim Rückübersetzen in ASM ist es schwer genug halbwegs die Funktion zu erahnen. Und wie schon gesagt: Niemand wird sich die Mühe machen das bei deinem Programm zu tun. Das wäre vermutlich hundertmal so aufwendiger als die Funktionen nachzuprogrammieren. Zitieren
Narf! Geschrieben 2. Februar 2006 Autor Geschrieben 2. Februar 2006 Es war auch eher eine allgemeine Frage und ob das was ist, was man mal so nebenbei machen kann. Aber das ist es wohl nicht, da bin ich ja beruhigt. :floet: Zitieren
marcom Geschrieben 2. Februar 2006 Geschrieben 2. Februar 2006 Was funktionieren könnte, wäre ein Programm zu schreiben, das während der Laufzeit den Programmcode ändert (nicht Source code). Sprich, er überschreibt sich selber während der Laufzeit. Kann man recht einfach mit Assembler machen, wenn man Erfahrung hat. ABER a) wozu?? wetten, dass das Programm nicht mehr das macht, was es machen sollte, nachdem man es so gemacht hat :-) Diese Technik wird sehr häufig bei Viren verwendet, damit sie nicht so schnell entdeckt werden können. An so was hast Du sicherlich nicht gedacht, gell? :-) Gruß, Mark Zitieren
Bubble Geschrieben 2. Februar 2006 Geschrieben 2. Februar 2006 Was funktionieren könnte, wäre ein Programm zu schreiben, das während der Laufzeit den Programmcode ändert (nicht Source code). Sprich, er überschreibt sich selber während der Laufzeit. Und bei neuen CPUs mit NX (und aktiviertem DEP in Windows) platzt Dein Programm. Echt professionell. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.