Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 拼写数字到数字-理解简短的模糊代码_C_Obfuscation_Lexer_Deobfuscation - Fatal编程技术网

C 拼写数字到数字-理解简短的模糊代码

C 拼写数字到数字-理解简短的模糊代码,c,obfuscation,lexer,deobfuscation,C,Obfuscation,Lexer,Deobfuscation,有人能帮我理解这个代码吗 long long n,u,m,b;main(e,r){for(;n++||(e=getchar()|32)>=0;b= "ynwtsflrabg"[n%=11]-e?b:b*8+n)for(r=b%64-25;e<47&&b;b/=8)for (n=19;n;"1+DIY/.K430x9G(kC["[n]-42&255^b||(m+=n>15?n:n>9?m% u*~-u:~r?n+!r*16:n*16,b=0))u=1

有人能帮我理解这个代码吗

long long n,u,m,b;main(e,r){for(;n++||(e=getchar()|32)>=0;b=
"ynwtsflrabg"[n%=11]-e?b:b*8+n)for(r=b%64-25;e<47&&b;b/=8)for
(n=19;n;"1+DIY/.K430x9G(kC["[n]-42&255^b||(m+=n>15?n:n>9?m%
u*~-u:~r?n+!r*16:n*16,b=0))u=1ll<<6177%n--*4;printf("%llx",m);}
长n,u,m,b;main(e,r){for(;n++| |(e=getchar()| 32)>=0;b= “ynwtsflrabg”[n%=11]-e?b:b*8+n)用于(r=b%64-25;e15?n:n>9?m% u*~-u:~r?n+!r*16:n*16,b=0)u=1ll15?n:n>9?m%u*~-u:~r?n+!r*16:n*16,b=0)-为什么这些条件在
n

  • eIt不是可移植的C,因此也不是特别聪明。有更好的例子。但就我而言,你的分析到目前为止值得一试。试着在你选择的调试器中单步执行代码-这通常有助于理解其他人的代码。字符串文字也是数组表达式,可以是下标与任何其他数组表达式一样-
    “foo”[1]
    的计算结果为
    'o'
    @Bathsheba:not portable C您指的是旧的K&R语法:
    main(e,R)
    ?不,事实上它采用ascii编码。大多数混淆比赛坚持使用portable C。
    long long n, u, m, b; // = 0
    
    int main(int e, int r) {
    
    /* loop1:*/ for(;
    /* --condition: */
    /*   if not:*/  n++ || // n++ == 0 <=> n == 0        // Set n += 1
    /*     then:*/
    /*   if not:*/  (e = getchar() | 32) >= 0;           // Set e <- input char
                    // `| 32` transforms upper case to lower case
                    // getchar < 0 <=> EOF
    /*     then break*/
    /* --increment: */
                    b =
    /*           if:*/  "ynwtsflrabg"[n %= 11] - e ?     // Set n %= 11
    /*       then b=*/  b                          :
    /*       else b=*/  b * 8 + n)
    
        /* loop2:*/ for(r = (b % 64) - 25;               // Set r
        /* --condition: */
        /*    if not:*/ (e < 47) && b;
        /*      break*/
        /* --increment: */
                        b /= 8)                          // Set b
    
            /* loop3:*/ for(n = 19;                      // Set n
            /* --condition: */
            /*   if not:*/  n; // <=> n != 0
            /*     then break */
            /* --increment: */
            /*   if not:*/  ("1+DIY/.K430x9G(kC["[n] - 42) & 255 ^ b ||
                            /* <=> {7, 1, 26, 31, 47, 5, 4, 33, 10, 9, 6, 78, 
                                    15, 29, 254, 65, 25, 49, 214}[n] == b */
            /*     then:*/  (m +=                       // Set m
            /*             if:*/  n > 15           ?
            /*        then m+=*/  n                :
            /*        else if:*/  n > 9            ?
            /*        then m+=*/  m % u * ~-u      :
                                  // <=> m % u * (u - 1)
            /*        else if:*/  ~(int)r          ?
            /*        then m+=*/  n + !(int)r * 16 :
            /*        else m+=*/  n * 16,
                            b = 0))                      // Set b
    
            /* --body: */   u = 1ll << (6177 % n-- * 4); // Set u, n
                            // <=> u = pow(2, 6177 % n-- * 4)
    
        printf("%llx\n", m);
    }