首页
社区
课程
招聘
[原创]2021 KCTF 春季赛 第二题 南冥神功
发表于: 2021-5-11 16:05 4937

[原创]2021 KCTF 春季赛 第二题 南冥神功

2021-5-11 16:05
4937
sub_40AD70();
  sub_4AF840((int)&dword_4B8860, "Input your code: ");
  sub_4B0AB0((int)&dword_4B8680, ipt);
  if ( strlen(ipt) <= 48 )
  {
    p = ipt[0];
    if ( ipt[0] )
    {
      ii = 0;
      yy = 0;
      xx_ = 0;
      is36 = ::is36;
      is0 = c0_z[0];
LOOP:
      if ( is36 > 0 )
      {
        jj = 0;
        if ( is0 == p )
        {
LABEL_11:
          v7 = (ii + jj / 6) % 6;
          ii_jj = jj + ii;
          xx = xx_;
          sw2 = v7;
          sw = 5 - ii_jj % 6;
          for ( i = 0; ; i = 1 )
          {
            switch ( sw )
            {
              case 1:
                ++xx;
                break;
              case 2:
                v17 = (yy++ & 1) == 0;          // 当前y是偶数则
                                                // x++ y++
                                                // 否则 y++
                xx += v17;
                break;
              case 3:
                v12 = (yy++ & 1) != 0;          // 当前y是奇数则
                                                // x-- y++
                                                // 否则 y++
                xx -= v12;
                break;
              case 4:
                --xx;
                break;
              case 5:
                v19 = (yy-- & 1) != 0;          // 当前y是奇数则
                                                // x-- y--
                                                // 否则 y--
                xx -= v19;
                break;
              default:
                v18 = (yy-- & 1) == 0;          // 当前y是偶数数则
                                                // x++ y--
                                                // 否则 y--
                xx += v18;
                break;
            }
            if ( xx > 9 )
              break;
            if ( yy > 8 )
              break;
            v13 = &pz[yy][xx];                  // 一定要为0
            if ( *v13 )
              break;
            *v13 = 1;
            if ( i == 1 )
            {
              ++ii;
              xx_ = xx;
              p = ipt[ii];
              if ( p )
                goto LOOP;
              goto END;
            }
            sw = sw2;
          }
        }
        else
        {
          while ( is36 != ++jj )
          {
            if ( c0_z[jj] == p )
              goto LABEL_11;
          }
        }
      }
    }
    else
    {
END:
      tst = pz;
      cc = 0;
      do
      {
        v16 = tst + 1;                          // tst 90 个都为1
        do
        {
          cc += *(_BYTE *)tst == 0;
          tst = (char (*)[10])((char *)tst + 1);
        }
        while ( v16 != tst );
      }
      while ( &pz_end != (_UNKNOWN *)v16 );
      if ( !cc )
      {
        sub_4ABF30(&dword_4B8860, "Good job!", 9);
        sub_4AD980(&dword_4B8860);
        return 0;
      }
    }
  }
  sub_4ABF30(&dword_4B8860, "Try again...", 12);
  sub_4AD980(&dword_4B8860);
sub_40AD70();
  sub_4AF840((int)&dword_4B8860, "Input your code: ");
  sub_4B0AB0((int)&dword_4B8680, ipt);
  if ( strlen(ipt) <= 48 )
  {
    p = ipt[0];
    if ( ipt[0] )
    {
      ii = 0;
      yy = 0;
      xx_ = 0;
      is36 = ::is36;
      is0 = c0_z[0];
LOOP:
      if ( is36 > 0 )
      {
        jj = 0;
        if ( is0 == p )
        {
LABEL_11:
          v7 = (ii + jj / 6) % 6;
          ii_jj = jj + ii;
          xx = xx_;
          sw2 = v7;
          sw = 5 - ii_jj % 6;
          for ( i = 0; ; i = 1 )
          {
            switch ( sw )
            {
              case 1:
                ++xx;
                break;
              case 2:
                v17 = (yy++ & 1) == 0;          // 当前y是偶数则
                                                // x++ y++
                                                // 否则 y++
                xx += v17;
                break;
              case 3:
                v12 = (yy++ & 1) != 0;          // 当前y是奇数则
                                                // x-- y++
                                                // 否则 y++
                xx -= v12;
                break;
              case 4:
                --xx;
                break;
              case 5:
                v19 = (yy-- & 1) != 0;          // 当前y是奇数则
                                                // x-- y--
                                                // 否则 y--
                xx -= v19;
                break;
              default:
                v18 = (yy-- & 1) == 0;          // 当前y是偶数数则
                                                // x++ y--
                                                // 否则 y--
                xx += v18;
                break;
            }
            if ( xx > 9 )
              break;
            if ( yy > 8 )
              break;
            v13 = &pz[yy][xx];                  // 一定要为0
            if ( *v13 )
              break;
            *v13 = 1;
            if ( i == 1 )
            {
              ++ii;
              xx_ = xx;
              p = ipt[ii];
              if ( p )
                goto LOOP;
              goto END;
            }
            sw = sw2;
          }

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//