Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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.

Geschrieben

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.

Geschrieben
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!

Geschrieben


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:

Geschrieben
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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

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??

B) 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

Geschrieben
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. :rolleyes:

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...