Möglichst unverständliches Programm

Status
Nicht offen für weitere Antworten.

Xadian

Mitglied
Hey Leute,

ich hatte vor ner Weile mal ein kleines Programm hier (in Pseudocode), was darauf ausgelegt war möglichst klein (wenig Zeilen) zu sein und dabei so unverständlich wie möglich zu sein. Jetzt wollt ich das wem ziegen und finds nicht mehr wieder. Aber da es sowas bestimmt öfter gibt wollt ich mal wissen, ob mir jemand nen Link zu sowas geben kann.
Sollte halt einfach möglichst kurz sein und seine Aufgabe (durch entsprechend unübersichtliche Programmierung) so gut es geht verschleiern (z.B. durch GOTO oder so). Pseudocode wär am besten oder C,C++,C#,Java oder Ada wären mir am liebsten (anderes geht aber zur Not auch). Und die Aufgabe muss nicht komplex sein (das was ich hatte hat glaub ich einfach nur nen int Wert berechnet aber es war recht schwer rauszufinden welchen genau).

mfg
xadian
 

RaoulDuke

Bekanntes Mitglied
Ist zwar Perl und kein Java, funktioniert aber:

Code:
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';
 

The_S

Top Contributor
RaoulDuke hat gesagt.:
Ist zwar Perl und kein Java, funktioniert aber:

Code:
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';

WTF? Was in Gottes Namen ist das???
 

RaoulDuke

Bekanntes Mitglied
Ich hab es ausprobiert, es erzeugt tatsächlich diese Ausgabe:

http://www.99-bottles-of-beer.net/lyrics.html

Wie das genau funktioniert konnte ich allerdings leider noch nicht festellen, irgendwie baut das Programm wohl über Schleifen und Reguläre Ausdrücke dynamisch Code zusammen und interpretiert den. Sehr krasse Nummer auf jeden Fall.
 

Lim_Dul

Top Contributor
Diese Java Version von 99 Bottles of Beer ist auch cool:

Code:
public class BeerSongLoader extends ClassLoader {
  private static final String BEER_SONG =
	  
    " #§$%MBVC?*9@QW68Q986@9                                                                   " +
    " @6######%§##%@#9##§§##§9                                                                 " +
    "   #C##§@#9#   ##$##§9#?#                                                                 " +
    "   #§Q#?##§W    #?##§6#9#                                                                 " +
    "   #§8##$##9    ###$##$§#         ?##$$#?##           $%#?##$M#?         ##$B#?#  #$V#?#  " +
    "   #$C#?##$?    #9###$##       $*#C##$9#9##$@       ##$Q#9##$W##$6   #C##$8#§### V%QV*V6V " +
    "   *CM%6#§###%$?$*BV#§#       ##MM%V8   VMVB#§#   ##?CMV8B  %CMC$V*  V6VC#§##§M$?$*MQV9V§ " +
    "   CVV§$8VQV§V6VC$8B%CMC$    V*V6VC%    @#Q##§B  ##§V#§##    §CV9V§C   VV§$8VQV§V6VC$8B%C " +
    "   MC$V*V6VCM$CBV*VQVMVBC$  #§##%WC@%#$QV%V?V8V* V%VB$Q%#$%V6V8$#VWV   8C$VB$#V$  V8CMCM  " +
    "   VQVBC%CQ%     §$%%§$#V$V 8CMCMVQVBCQ%§%QC@%#  CW$#V$V8CMCMVQVBC%C   W$#V8VV$#          " +
    "   V$VBVBC$#     §###§V6#§# ##§M6#C##            %##Q##%§              ##%$#Q##           " +
    "   %%##%M#§#     ##6$#V8V6$  #CMV?VB$#           CCV§VQVQ$             Q$##§###$          " +
    "  $6#9#§##$WC   @%#$QV%V?V    8V*V%VB$Q%#$%MCV8   $#CMV8$#CMV?VB$#C%   CMV8C$VB$          " +
    "  #V§V6VM$#V$CBC*$#C%V8VWV      B$#VWV8C$VB#§##$    VCQ%#%QBMV§V@VB$  #V8V6VB$#VMV8C      " +
    " CV6$#V§V6VM$#C#V§C%C%$#          V*CM$#V§C$V         8CBV6VMCW$Q$    ##§###$C@%##§#      " +
    "                                                                                          " +
    " ##$C@%§#§###8$#V8V6$#C                                                                   " +
    " MV?VB$#CCV§VQVQ$6#9#9#Q#                                                                 " +
    "   #§?##§*#§   ##§#V9V§CV                                                                 " +
    "   V§$8VQV§V    6VC$8M8V$                                                                 " +
    "   V9VBV%CM#    C##%B#Q##         %V##%C#C#           #%?#Q##%*#         #%9#§##  #?M$VB  " +
    "   VBC$B%V8V    6VC#§##§       #V9V§CVV§$8VQV       §V6VC$8B%CMC$V   *V6VC#§###C C$VBC#VQ " +
    "   V§V%VB#§##MM$?MQV9V§       CVV§$8V   QV§V6VC   $8M%V?V§  C$B%VBC  §CBVBV6V%VB%@MQV9V§C " +
    "   VV§$8VQV§V6VC$8M%V?V§C    $B%VBC§    CBVBV6V  %VB%@$*M    QV9V§CV   V§$8VQV§V6VC$8B%CM " +
    "   C$V*V6VC%@#§###VV§C#C#V  BV6VM#§##$W$?MQV9V§C VV§$8VQV§V6VC$8B%CM   C$V*V6VC%  @$*MQV  " +
    "   9V§CVV§$8     VQV§V6VC$8 B%CMC$V*V6VCM$CBV*V  QVMVBC$%@#§##§§V9V§   CVV§$8VQV          " +
    "   §V6VC$8M*     V6CMVBVCVB C$#§###CC            VV§VQCBV              BM8VV#§#           " +
    "   #§V$?M*$*     MQV9V§CVV§  $8VQV§V6V           C$8M*V6CM             VBVCVBC$%          " +
    "  @#§##§CV9V§   CVV§$8CMVB    C?CM$8MWVBC%C%V§V   CVBMVV8C$VWV§CM#§#   ##VVVV8C$          " +
    "  VWV§CM#§##%*$?MQV9V§CVV§      $8VQV§V6VC$8B%CM    C$V*V6VC%@B@MQV9  V§CVV§$8VQV§V6      " +
    " VC$8M8V$V9VBV%CM%@$*MQV          9V§CVV§$8VQ         V§V6VC$8B%CM    C$V*V6VC%@##$§      " +
    "                                                                                          " +
    " ##§M##§§###########$##                                                                   " +
    " #§##§B##§V###§##§C######                                                                 " +
    "   §§###§###   §#######B$                                                                 " +
    "   9@C###§@§    #########                                                                 " +
    "   ##§##§?##    §*###§##§         C######?V           ###C###M##         ####C9@  @###$B  " +
    "   *@C###%MQ    §#V%%W§Q       *@##V*§$#MM6$@       @@###$B*@C###%   $W§$#B§$#V@ V###C@V# " +
    "   ##?§$#*@V###?$W@V###       ?§$#9@V   ###?§$#   @@V###?§  $#Q@V##  #?$W§$#W§$#6@V###C@V " +
    "   ###?§$#8@V###?@V##§##B    @W##§§B    *#%§Q@?  ##§$B%B*    #M§Q§#V   %V#§#VMC#@?##§$B%@ " +
    "   ?##§%@V###?BC?M#$889C88  **$@@V##§#@######### ####C§$*M§QCC@@#V*?   M%V*Q9?C%  B§Q%CM  " +
    "   @C9V@Q8C$     *@6#M9B§%6 %@Q*§B6#C?CQ?*9WQ%9  9QVC#89B§#*6CQ%#*B§   V?9$9QMV§          " +
    "   M@Q@V6V88     8V9§@W96M$ §??V8M@C%            %**MQ@§*              $§VC%$@*           " +
    "   C§8?M98QC     #M$9W%$6B9  VV$$§WCMQ           $%#W8§#QB             ?W8C?$W9@          " +
    "  96C9@V?%$*6   89BVWV@W8@    VM$M#CC8V$@M$6M*%   V#$MC6W#§%%%*8#CM@   M*B@%9$W?          " +
    "  $9$99M$?*8B$VM8CC§CW6W@*      %W%CC?@#§?B8@W%9    ?*%$9B%8Q*§BQ$Q9  6@V9#?V98C$M$M      " +
    " M@%??C88M$86M$QV§WC?B?V          Q%§B8§#%?MQ         B6§BM?B9@#$%    WQMW?BBBB?#§§6      ";

  @Override public Class<?> loadClass(String name) throws ClassNotFoundException {
    String alphabet = "";
    byte[] code = new byte[946];
    int i = 0, j = 0;
    boolean firstNibble = false;
    while (i < 946) {
      while (BEER_SONG.charAt(j) == ' ') j++;
      if (alphabet.length() < 16)
        alphabet += BEER_SONG.charAt(j++);
      else if (firstNibble = !firstNibble)
        code[i] = (byte)(alphabet.indexOf(BEER_SONG.charAt(j++)) * 16);
      else
        code[i++] += alphabet.indexOf(BEER_SONG.charAt(j++));
    }
    return name.equals("BeerSong") ? defineClass(name, code, 0, 946) 
                                   : findSystemClass(name);
  }

  public static void main(String[] args) throws Throwable {
    Class<?> beerSong = new BeerSongLoader().loadClass("BeerSong");
    System.out.println(beerSong.newInstance());
  }
}
http://www.99-bottles-of-beer.net/language-java-1162.html
 

gekkonier

Mitglied
RaoulDuke hat gesagt.:
Ich hab es ausprobiert, es erzeugt tatsächlich diese Ausgabe:

http://www.99-bottles-of-beer.net/lyrics.html

Wie das genau funktioniert konnte ich allerdings leider noch nicht festellen, irgendwie baut das Programm wohl über Schleifen und Reguläre Ausdrücke dynamisch Code zusammen und interpretiert den. Sehr krasse Nummer auf jeden Fall.

Perl hat die möglichkeit innerhalb von Regexen Code zu generieren (der natürlich auch wieder durch die Maschine verändert werden kann, rekursiv sozusagen).
Da hat Perl die Nase vorn.

Es gibt übrigens für Perl Programme, denen man als Parameter eine Schablone (z.B. wie schaun diese Flaschen aus) und ein Script übergibt und die Obfuscation für einen übernimmt. IMHO ist das Flaschenprogramm auch so entstanden. Selber würde man wahrscheinlich mehrere Wochen daran rumkauen.
 

foobar

Top Contributor
Perl hat die möglichkeit innerhalb von Regexen Code zu generieren
Du meinst Code zu evaluieren:

Code:
s/foo(.*?)bar/&myFunction($1)/sieg;
Der Modifier e bewirkt daß der 2 der Ersetzenteil evaluiert wird. Sowas wünsche ich mir auch in Java :). ich wäre schon zufrieden wenn es in Java ein paar schönere Stringoperationen wie in perl gäbe oder eine Syntx für Methodenpointer.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Batchdatei, Prüfe ob Programm X läuft Softwareentwicklung 2
N Pop-up Programm mit Live-Video Softwareentwicklung 7
fk1 Beginnercode: Pokerdealer Programm Softwareentwicklung 60
C Programm "Road Chat" realisierbar? Softwareentwicklung 2
J Suche noch eine Loesung fuer Kommunikation zwischen Webserver und ein Programm Softwareentwicklung 0
P Benutzeroberfläche Programm Bewertung Softwareentwicklung 2
KranzKrone Architektur für einfaches Gui Programm Softwareentwicklung 6
G Make or Buy? - Tagging-Programm Softwareentwicklung 4
G Linux: Programm mit UI einmalig beim Systemstart ausführen Softwareentwicklung 3
B WHILE und GOTO Programm Softwareentwicklung 32
I Tool / Programm etc. zur Testdokumentation gesucht Softwareentwicklung 2
T Kommerziellen Programm unter Verwendung div. Libraries mit div. Lizenzen Softwareentwicklung 7
Airwolf89 Java-Programm in C++ portieren Softwareentwicklung 4
Steev Javaprogram aus C/AL-Programm ansteuern Softwareentwicklung 13
clupus Verbindung mit c-Programm Softwareentwicklung 4
V AGB's in Programm einbauen? Softwareentwicklung 3
J Design Patterns in Programm hineinfließen lassen Softwareentwicklung 23
sparrow Welche Lizenz für ein offenes Programm Softwareentwicklung 2
G Suche Programm für Masken Design für Pflichtenheft Softwareentwicklung 5
T Programm mit Passwort schützen. Softwareentwicklung 44
J Finde Fehler im Programm nicht (Klasse Kreis) Softwareentwicklung 1
E Java Programm distributen Softwareentwicklung 35
P Grafik-Programm mit JAVA? Softwareentwicklung 21
F Kleines Programm für Windows Softwareentwicklung 2
M Kurvendiskussion, Funktions-Plotter, Mathe-Programm. Softwareentwicklung 3
W Herangehensweise an ein Java Programm Softwareentwicklung 4

Ähnliche Java Themen


Oben