Irgendwie habe ich den obligatorischen "Obfuscation-Thread" in diesem Forum schon länger vermisst. Nun eröffne ich einfach mal einen, aus dem einfachen Anlass dass meine erste Obfuscation fertig ist. Sie ist zwar nicht sooo umwerfend aber nunja... man fängt halt langsam an.
Obfuscation beschreibt die Kunst, Programmcode unleserlich zu machen oder gar so zu verunstalten, dass man beim Lesen denkt "ah, ganz klar, der macht XYZ" und in Wirklichkeit tut er etwas ganz anderes.
Nunja, dann hier meine erste selbstgemachte JAPH-Obfu (quasi das "Hallo Welt" der Obfuscation), es handelt sich dabei um einen klassischen Dreizeiler:
Und immer dran denken: "pack/unpack is not what an obfu does."
PS: Bitte bitte schreibt viele OBFUs und haltet diesen Thread am Leben. Ich finde das einfach faszinierend was man mit Sprachen wie Perl, PHP, C++, ... alles anstellen kann.
Unbedingt Sinn (!!) macht's nich, aber es macht halt Spaß:
Zitat:
Zitat von Wikipedia
Viele Spracheigenschaften von Perl laden dazu ein Programmcode humor- oder kunstvoll zu gestalten. Dies hat zu verschiedenen teils humorvollen, teils skurrilen Wettbewerben und Aktionen um die Programmiersprache Perl geführt.
Sehr berühmt und berüchtigt ist [..] die Disziplin obfuscation für die es auch einen jährlichen Wettbewerb gibt. Hier wird danach gestrebt das sichere Beherrschen der Sprache und aller Eigenheiten zu demonstrieren und die Programme so schwer verständlich wie möglich zu schreiben. Dies ist in Perl besonders leicht da es für fast alles Kürzel gibt und viele Dinge abhängig vom Kontext automatisch geschehen, was auch oft als ?Perl Magie? bezeichnet wird.
Es macht einfach wahnsinnigen Spaß wenn man Programmiersprachen beherrscht die sich für Obfu eignen. Es macht Spaß, Obfus zu erstellen und die anderer zu "entschlüsseln".
Dieser Thread sollte aber eigentlich eine Obfu-Sammlung werden und nicht ein Thread um den Sinn oder Unsinn von Obfu.
Achso eins noch bevor's wirklich los geht: An alle die sich jetzt denken: "Schrottigen Source schreiben kann ich auch." oder "Sonderzeichen in eine Textdatei schreiben ist ja nicht schwer." Denkt daran, dass der obfuskierte (sagt man das?) Code auch danach noch ausführbar ist und einen Zweck erfüllt (so wie in meinem Beispiel das Ausgeben des Strings "Just another Perl hacker.").
Obfuscation funktioniert mit vielen Programmiersprachen die auch die im Wikipedia-Zitat genannte "Perl-Magie" besitzen. BASIC und Assembler eignen sich weniger. C, CGI und PHP dagegen eignen sich sehr. Allgemein sind Programmiersprachen mit vielen verschachtelten Argumenten und hoher Sonderzeichendichte im Source gut geeignet dann das verwirrt schonmal stark.
Die ist cool. Der obere Code von Dir ist ja mehr Pseudo-Code. Also er tut schon was aber nix sinnvolles. Ist aber nicht sehr hart zu verstehen: Setzt in die Variable $a eine Zeichenkette, setzt $j auf 0, schreibt in $i eine Zufallszahl, so lange wie der Charakter aus der Zufallszahl nicht zweimal in der Zeichenkette enthalten ist wird $j je um eins erhöht und wenn $i modulo 2 gleich 0 ist (also $i gerade ist), dann stirbt (die) der Server, bricht also die Verarbeitung ab.
hmm.. paar abstrakte Zeichenfolgen gebastelt - wie toll
Nope. Gibt "just another perl hacker" aus, nix abstraktes.
Zitat:
Zitat von smoek
Wenns dich nicht interessiert..
Nunja, Du musst dafür Verständnis haben. Das hier ist halt der Thread der Elitecoder. Wenn man eher zu den 14m0rn/5*4mm0rn gehört *taxi-anguck* wird man halt schnell mal etwas agro. Waaaaah, ... *messeraufmichzufliegenseh* ... *duck* ... *indeckunggeh* ... *wart* ... *wegrenn* ... *puuh* - das war knapp.
Bevor ich vollends einen Speichkrampf bekomme (auch als bekannt) solltet ihr weniger Zeit investieren Code in kryptischer Form zu schreiben, als mehr Zeit und Energie in die Konventierung solcher VHIT-Freaks zu ordentlichen Codern voranzutreiben.
Unter dem Wort Elitecoder verstehe ich niemanden, der Code in erbärmlichster Forum schreiben kann. Ein Elitecoder schreibt selbst die kompliziertesten Sachen einfach, verständlich, ordentlich formatiert und KOMMENTIERT. Ein Elitecoder ist stehts darauf bedacht die Lesbarkeit und Nachvollziehbarkeit des Codes so groß wie möglich zu halten - ebenso die beiliegende Dokumentation.
Wenn ihr meint kryptisch coden wäre cool - krallt Euch COBOL oder FORTRAN und hackt in eurer kleinen erbärmlichen Ecke - abseits von jeglicher Zivilisation. Es wird Zeit, dass solches Gedankengut endlich ausstirbt.
Habt ihr eigentlich eine Grundvorstellung, wieviel Kosten in Reverse Engineering gesteckt werden müssen, nur weil manche Coding-Trolle sich nicht an die einfachsten Coding-Guidelines halten können?
Aber scheinbar kommt diese Erkenntnis erst, wenn man mal ein komplettes Projekt (~ 45mb reiner Sourcecode) vorgeworfen bekommt und darauf was aufsetzen soll.
Da würde ich euch viel Spass wünschen, wenn ihr derartigen Müll wie oben vorgeworfen bekommt.
Bevor jetzt einer von Euch VHIT Freaks mich vollsülzt wegen Threat vollspammen und Spass nicht verstehen: Bedenkt bitte, dass Softwareentwicklung in 95% der Fälle kein Spass ist, wenn ihr daqs nicht anständig lernt, führt ihr das später vielleicht weiter. Lieber daher von vorn herein ordentlich coden, als später Müll abliefern.
ach - und wenns schon UNBEDINGT sein muss, postet doch immer bitte eine vergleichsversion, sodass es auch für nicht VHIT Freaks ersichtlich ist, was der Kappes soll.
Unter dem Wort Elitecoder verstehe ich niemanden, der Code in erbärmlichster Forum schreiben kann. Ein Elitecoder schreibt selbst die kompliziertesten Sachen einfach, verständlich, ordentlich formatiert und KOMMENTIERT. Ein Elitecoder ist stehts darauf bedacht die Lesbarkeit und Nachvollziehbarkeit des Codes so groß wie möglich zu halten - ebenso die beiliegende Dokumentation.
Ich würde behaupten, dass jemand, der sich Elitecoder nennt, keinen Plan von Software-Entwicklung hat, denn da gehts mehr um die Ordnung sowie du es anführst, damit VOR ALLEM die Wiederverwendbarkeit von Code erhalten bleibt. Unter Elitecoder verstehe ich eher einen Einzelgänger, der stolz auf sein kleines Progrämmchen ist
Zitat:
Zitat von tele
Wenn ihr meint kryptisch coden wäre cool - krallt Euch COBOL oder FORTRAN und hackt in eurer kleinen erbärmlichen Ecke - abseits von jeglicher Zivilisation. Es wird Zeit, dass solches Gedankengut endlich ausstirbt.
FORTRAN musste ich einmal Programmieren und das als C/C++ bzw. Pascal Programmierer war wirklich ein Krampf .
Zitat:
Zitat von tele
Aber scheinbar kommt diese Erkenntnis erst, wenn man mal ein komplettes Projekt (~ 45mb reiner Sourcecode) vorgeworfen bekommt und darauf was aufsetzen soll.
Da würde ich euch viel Spass wünschen, wenn ihr derartigen Müll wie oben vorgeworfen bekommt.
Das errinnert mich an einen Schulfreund, der mich mal bat seinen JavaScript Code auf Fehler zu überprüfen, als ich den ansah, bekam ich nen echten Schock. Der komplette Code war in 1 Zeile geschrieben und die Variablennamen waren einfach Buchstaben von a-z .
Zitat:
Zitat von tele
Bevor jetzt einer von Euch VHIT Freaks mich vollsülzt wegen Threat vollspammen und Spass nicht verstehen: Bedenkt bitte, dass Softwareentwicklung in 95% der Fälle kein Spass ist, wenn ihr daqs nicht anständig lernt, führt ihr das später vielleicht weiter. Lieber daher von vorn herein ordentlich coden, als später Müll abliefern.
hört auf den Tele. Früher hielt ich das auch für "mühselig" alles zu kommentieren und formatieren, aber mittlerweile ist es so drin, dass es mich
stört, wenn ich bei meinem Nachbar keine Einrückung sehe .
und außerdem hat das ganze eigentlich wirklich keinen Sinn, sondern kann sogar schlimme Folgen haben, da man sich die "Bequemlichkeit" angewöhnt und später große Probleme bekommt.
PS:
könnt ihr eigentlich nur Web Programmiersprachen? Die sind ned so mein Fall, bei C/C++ oder Pascal würde ich vielleicht sogar ein Entschlüsselungsversuch wagen.
Naya als ich meinen ersten Source gecoded hab der über 2 Module und 10 Subroutinen hinausgewachsen ist, hab ich auch das kommentieren angefangen. Früher hielt ich das auch für überflüssig.
findest du das verstümmeln von Menschen lustig? könntest du das als witz andenken? nein? komischerweise seh ich das mit code genauso.
aber ich hab ja schon geschrieben, textet doch wenigstens die korrekte version dazu
thema regex commentieren:
normalerweise macht man kommentare in C ähnlichen sprachen mit zwei // vor dem kommentar, bei mehrzeiligen Kommentaren geht das mit /* davor und */ am abschluss. damit ist es z.b. möglich einer zeile code auch mehr zeilen kommentar zu verpassen z.b.
/*
* This REGEX is supposed to filter all bullshit from the string paramters
* handed over. specificely .... and ... do ... and ...
*
*/
<beliebiger code>
über den Regexen steht der Kommentar schon, soferns nicht wirklich ersichtlich is.. wenn ich jetz sowas hab wie
Code:
!\[php\](.*?)\[\/php\]!
brauch ich das wohl kaum noch kommentieren, wenn schon drübersteht über dem ganzen Block, dass hier die [php.] -Tags ersetzt werden..
Der Regex an sich ist aber schon mal ganz lustig anzuschauen.. wenn der so über 2 Zeilen geht - auch wenn man weiss was er macht.. wenn man quasi mal nicht mit Programmiereraugen drauf sieht, was das denn fürn Schmarrn is..
so is das eher gedacht