Tutorials zur Code-Verschleierung in C
Ich bin fasziniert von der Art, wie Menschen tarnen Ihren Quellcode (meist C) (Beispiele hier : http://ioccc.org/) und würde gerne lernen die verschiedenen Techniken für die gleiche. Mir wurde gesagt, von einem Buch, "Obfuscated C und andere Geheimnisse", aber ich bin nicht in der Lage zu bekommen, dass Buch.
Gibt es irgendwelche tutorials oder Bücher, die Tipps geben zu diesem Thema?
Danke.
Ich glaube nicht, dass eine generische Technik existieren kann... Man muss kreativ sein.
Viele der Verschleierung über auf codegolf.
Viele der Verschleierung über auf codegolf.
InformationsquelleAutor Chandra | 2013-06-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die besten können Sie tun ist, Lesen Sie die Kommentare, die der Autor der Programme auf IOCCC. Sie beschreiben, wie Sie zu verwalten, zu verschleiern Ihre Codes. Hier sind ein paar Hinweise:
Kurz und bedeutungslos Bezeichner
Weil
a=aaa*aa;
wird immer mehr verschleiert alsresult = value * factor;
Um kurze Bezeichner, obfuscators tendenziell sogar
#define
viele Dinge.Umgekehrt array-Indizierung
Du musst nur daran erinnern, dass
var[3]
und3[var]
gleichwertig sind.Digraphen und trigraphs
if(a< <:b+aa??))??<f();%>
sollte weniger lesbar als:
if (a < (b+aa)) { f(); }
- Look-alike-Zeichen
Manchmal, es ist schwer zu sagen, appart
l
,1
undI
odero
,0
undO
. Zum Beispiel, wenn Sie schreiben10l
ich Wette, jeder wird Sie Lesen101
statt.Coding style Richtlinien
Allgemein gesprochen, versuchen Sie einfach zu finden, gute coding-guidelines und versuchen zu Sie verletzen alle. Diejenigen Dokumente, die Sie finden konnte, irgendwo auf dem web könnte Ihnen helfen, mehr als die meisten Dinge, und Ihnen erlauben würde, nichts zu kaufen.
Hier sind einige links:
Sie nach Links aus Makros.
Oh ja, rekursive Dateien, die Integration mit X-Makros zum generieren von code in einer völlig obfusated Weg.
es muss nicht alles sein, wie schwer, wie X-Makros - Sie sehen oft einfache alte makro-Definitionen in obfuscated code-Eingaben. Zum Beispiel, die Neudefinition können ein Passwort machen das Lesen eines Programms sehr schmerzhaft:
#define char k['a']
Aber ich Sprach bereits über
#defin
ing Zeug in meinem zweiten Punkt 🙂InformationsquelleAutor Morwenn
Morwenn Antwort schön deckt Verschleierung syntax. Aber es gibt eine andere Ebene, und das ist semantische Verschleierung. Bedenken Sie, dass die oft genannten Turing-Maschine hat die gleiche Rechenleistung wie jede andere Programmiersprache (ignorieren überlegungen von input und output). In der Tat all die verschiedenen verarbeitungsmodelle haben Geschwister-Modelle mit gleicher Leistung.
Beispielsweise ein string
char s[N]
kann als eine Zuordnung von Indizes zu Zeichen, so dass jeder string repräsentiert werden kann, sondern durch eine Funktion, die liefert immer die entsprechenden Zeichen, wenn man es mit dem einen angegebenen indexchar f(int i)
. Jetzt Lesen diese. Verrückt, nicht wahr?InformationsquelleAutor luser droog