Logik der '12 Tage Weihnachten'
Hier ist das bekannte Beispiel der verschleierte code in C zu generieren Texte der '12 Tage Weihnachten'. Ich habe versucht, herauszufinden, die Logik des Codes, der erklärt, wie eigentlich der text gedruckt wird. Aber ich bin nicht in der Lage zu verstehen, die gleichen.
#include <stdio.h>
main(t,_,a)
char *a;
{
return!0<t?t<3?main(-79,-13,a+main(-87,1-_,main(-86,0,a+1)+a)):
1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/') }+}{rl#'{n' ')#\
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);
}
Kann jemand mich leiten, wo finde ich die Erklärung dieses code-snippet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantworten Ihre follow-up-Frage zu RedX, folgende Informationen auf den link oben, (siehe die komplette reverse Engineering-code hier: http://research.microsoft.com/en-us/um/people/tball/papers/xmasgift/final.html), führt es die folgenden zum decodieren der Zeichenfolge:
Gibt es 2 große strings im code:
und
Es verwendet die zweite Zeichenfolge lookup der korrekte Buchstabe angezeigt (das ist der zweite string, formatiert in 2 Reihen)
Beispiel: Das erste Zeichen in string 1 ist
@
. Suchen Sie auf den zweiten string, '@' in der ersten Zeile Zeilen, die mit 'O'. Fortsetzung der gleichen Logik, Sie erhalten@n'+,#
=On the
. Kurz, es gleicht die aktuelle position von 31 (printf("%c"), s[index]+31
)Den Haupt-code übergibt Zeichen aus string 1 und dann ist es ins englische übersetzt-lesbaren string mit dem oben angegebenen Algorithmus. Wenn Sie anschließend die reverse-engineering-link, es gibt einige Zeichenfolgen, die Konstante in der alle Verse, BSP.: "Auf" ... "von Weihnachten, meine wahre Liebe zu mir geschickt". In den kodierten string vor, werden diese Zeichenfolgen getrennt durch das Zeichen'/'.