wie könnte man den code noch wirrer machen? #include <stdio.h> char __[] = "sinn"; int (*_)(const char*, ...)=printf; int main() {for(;_(__)-_("frei");)_("\n");}
Walter K. schrieb: > wie könnte man den code noch wirrer machen? Vielleicht so?
1 | #include <stdio.h> |
2 | char __[]={0x66,0x72,0x65,0x69,0x00};int(*_){const char *,...)=printf;int main(){do{_("sinn");}while(_(__));_("\n"); |
Drei Sachen fallen mir spontan ein: 1. das include der Standard-IO Lib kann man sich bei den meisten Compilern sparen (zB beim GCC), da er so "schlau" ist und errät, wo er die printf-Funktion findet 2. Die ASCII-Texte "sinn" und frei könnte man durch eine Mischung aus Hex-/ Dec-/ und Oktalwerten ein wenig schwerer lesbar machen char __[] = {0x3A, O123, }... 3. Dann könnte man aber auch noch beide Teilstrings in einen basteln "sinnfrei" und diesen nach Punkt 2 umwandeln.
Mit Trigrpahs sollte es noch besser werden :D
1 | ??=include <stdio.h> |
2 | char __??(??)=??<0x66,0x72,0x65,0x69,0x00??>;int(*_)??<const char *,...)=printf;int main()??<do??<_("sinn");??>while(_(__));_("??/n"); |
Beitrag "Was hat es mit den 'trigraphs' aufsich"
Walter K. schrieb: > wie könnte man den code noch wirrer machen? Naja, ich würde das als eher mäßig wirr bezeichnen. Falls du Anregungen für eine Optimierung brauchst, dann schau mal beim IOCCC vorbei. Eric B. schrieb: > Vielleicht so? Der Code hat mindestens 2 Klammerfehler, weswegen er nicht kompiliert. Selbst wenn man die Fehler korrigiert, ist das Programm noch lange nicht äquivalent zum Original.
Und was hat man davon? Wenn man das compilieren kann und weiß was es macht, kann man es trotzdem kopieren. Ich weiß nicht wovor das schützen soll.
Yalu X. schrieb: > Eric B. schrieb: > > Vielleicht so? > > Der Code hat mindestens 2 Klammerfehler, weswegen er nicht kompiliert. > Selbst wenn man die Fehler korrigiert, ist das Programm noch lange nicht > äquivalent zum Original. Erwischt! Aber wirrer ist es, oder? ;-)
Was willst du damit bezwecken? Contest? Veröffentlichung? Dann kannste auch gleich Maschinencode rausgeben. Das was du suchst nennt sich C-Obfuscator.
Nils N. schrieb: > Was willst du damit bezwecken? Contest? Veröffentlichung? Dann kannste > auch gleich Maschinencode rausgeben. nein, nein ... hat keinen ernsthaften Hintergrund - sozusagen nur spass
Das hier ist noch ganz net: http://jroweboy.github.io/c/asm/2015/01/26/when-is-main-not-a-function.html
..sucht mal nach alten Veröffentlichungen in der Unix Open, Autor Reinhard Wobst. Der hat mal einen C-Quellcode-Obfuscator erfunden... Gruß, Holm
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.