Impenetrable-Code

Die undurchdringliche Code eines Computerprogramms ist ein Code, deren Verständnis ist sehr schwierig für einen Menschen während verbleibenden durch einen Computer vollständig übersetzbar.

Das Verfahren, mit dem der Code undurchdringlicher gemacht wird als Verschleierung oder Verdunkelung. Diese Programmiertechnik - die im Gegensatz zu der üblichen Praxis ist - hat seine Gründe.

Dies ist in erster Linie ein Mittel, um Entwicklungsinvestitionen zu schützen, indem ein Softwareobjekt Code-Generierung Techniken macht es schwieriger, Reverse Engineering. Es ist vor allem der Ersatz von Identifikatoren und Symbole, die durch nicht-sinnvolle Etiketten Etiketten.

Aber es ist auch ein Hobby für einige Programmierer. Diese Erholung besteht aus Quellcode zum Schreiben, deren Funktion es ist unklar. Die Verwendung einer Syntax nicht lesbar, wenig bekannte semantische Merkmale oder unappetitlichen Sprache verwendet oder unnatürlichen Algorithmen sind verschiedene Techniken Verdunkelung.

Die erste Form der Verschleierung in Bezug auf die Objektcode generiert späten Verteilung eines Programms, während die zweite bezieht sich auf den Quellcode.

Einige historische Verschleierung

Monteur

Programme Beseitigung aller Kommentare eines Quellprogramms, ersetzt alle Etiketten.

Variant noch pervers: Statt whiten Kommentare, sie mit anderen Bewertungen, die absolut nichts bringen ersetzen; Zum Beispiel:

Turbo Pascal 3

Zeit Turbo Pascal 3 war ein Programm, das Löschen aller unbedeutend weiß eines Quellcodes, Verdichten es mit einer Geschwindigkeit von 255 Zeichen pro Zeile, und ersetzen alle Variablen durch Kombinationen von 1, O und 0. Beispiel: A: = B + C wurde l0O1l10O: + = O1ll10O0 O0O1l00ll Unrecht oder zu Recht als weniger lesbar angesehen. Der Bedarf an diesen obfuscators war, weil Turbo Pascal 3 war es nicht möglich, andere Unterprogramme zu verteilen als in Form von Quellcode.

Verwendung einer Sprache Erzeugen des Assembler

In den 1960er und 1970er Jahren für ihre Entwicklung von PL Art von Sprachen, die in Assembler-Quellcode ein halb entwickelt reflektiert verwendet die meisten Hersteller. Anwendungen, die verkaufsfähig zu der Zeit, wenn der Quellcode zur Verfügung stand, ist das, was Assembler-Code, die den Kunden zur Verfügung gestellt wurde generiert. Somit kann ein Befehl wie beispielsweise A + B = 31; wurde:

Version, dass der Kunde war weniger geneigt, sich zu ändern, zumal die nächste Version müssten alle Änderungen zu starten. Das erste Ziel war weniger, den Quellcode der Programme Veränderungen von den Kunden, Fernwartung von Verlagen als für die geänderte Programme schwieriger zu verbergen beschränken.

Partie

Obwohl rudimentäre, ermöglicht die Batch Sprache ihm auch den Code zu erschweren, so dass das Verständnis schwieriger Programme. Die "Set" Anweisung definiert Gleichwertigkeit. Zum Beispiel: Set A = B. Dann ist es möglich, anstelle der Aufruf einer B zwischen zwei Symbolen "%" verwenden. Beispiel:% A%. Das wird interessant, wenn wir eine wirkliche Erklärung ersetzen, um eine komplexe Zeichenfolge.

Beispiel: Set #A = Dir

Verwenden von% A,% # und wählen Sie den Befehl "Dir". Es kann das System auf die Spitze, indem die Set-Befehl nach der Equity-Methode zu verursachen, und verwenden Sie diese, um weitere Anweisungen Equity kodieren.

Beispiel:

Dieser Code Maskentechnik wird von einigen Computerviren codiert Batch verwendet. Diese Viren sind rudimentär und selten, aber haben das Verdienst, in der Lage gewesen, um die Schwächen einer primitiven Sprache wie Batch zu nutzen und damit zu maskieren ihre Viruscode.

Fortran

Zusätzlich zu den herkömmlichen Techniken gelten für alle Sprachen kann die Verdunkelung eines Fortran-Code, indem Sie alle Felder aus und mit unterschiedlichen Namen für die gleiche Variable in verschiedenen Teilen der Code unter Verwendung EQUIVALENCE oder COMMON erhalten werden.

Algorithmische Verschleierung

Die Unterteilung in Unterketten des gleichen Kettenlänge n beweist, dass n keine Primzahl ist. Die Verwendung eines regulären Ausdrucks für einen solchen Test ist möglich, wenn auch recht langsam und unnatürlich. Eine Machbarkeitsstudie wurde in Perl geschrieben.

Eine besondere Form der Verschleierung ist ein mehrsprachiges Programm, das die gleiche Sache tut, wenn durch unterschiedliche Dolmetscher oder Compilern durchgeführt. Somit gibt es ein Programm, das gleichgültig von Perl interpretiert und C zusammengestellt verläuft, und daß dies auch das einzige Interesse.

Andere

Die Verdunkelung Ecken verwendet häufig eine wenig verwendete Sprache und kann manchmal helfen zu erkennen Bugs.

Der jährliche Wettbewerb ist die IOCCC Verdunkelung in C.
Die Perl Journal organisiert Verschleierung Wahlen in Perl.
Einige JAPH sind Verschleierungen.

Einige Sprachen wie C, Perl und APL eignen sich sehr gut zur Verschleierung. In The Humble Programmer hat Edsger Dijkstra harte Worte für die reichen Sprachen, die solche Techniken zugänglich sind und ist ein Verfechter von kleineren Sprachen. Larry Wall, sagt aber, dass eine Sprache, die auf schlechte Praktiken wie die Verschleierung zu verbieten versuchte zu verhindern, schreiben auch legitime Programme, wie beispielsweise einzelne Zeile.

(0)
(0)
Kommentare - 0
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha