zoukankan      html  css  js  c++  java
  • reverse-XNUCA-babyfuscator

    上一次线上赛的一道题目

    链接:http://pan.baidu.com/s/1qY9ztKC 密码:xlr2

    这是一道代码混淆的题目,因为当时还不知道angr这样一个软件,所以我就用了自己的一种思路

    本体是对32位密码进行顺次加密运算的(确实是顺次,我验算过),所以我的思路就是修改源代码,进行顺次爆破

    主要思想是在每一次报错的goto跳转前加上一个唯一的m变量值,并在报错的代码处用n变量来保存上一次的m值,如果m=n则说明,是同一位发生错误,继续爆破该位,若m!=n则说明,上一位正确,已经跳转到下一位,则i++开始爆破下一位。

    个人觉得方法还比较简单,工作量也比较小,上代码:

    // ewwe.cpp : Defines the entry point for the console application.
    //
    
    
    #include<stdio.h>
    #include<stdlib.h>
    typedef char _BYTE;
    
    
    void main()
    {
        unsigned int v1; // [sp+Ch] [bp-24h]@0
                   unsigned __int8 v2; // [sp+14h] [bp-1Ch]@69
                  char v3; // [sp+16h] [bp-1Ah]@2
                  char v4; // [sp+16h] [bp-1Ah]@32
                  char v5; // [sp+16h] [bp-1Ah]@34
                  char v6; // [sp+17h] [bp-19h]@8
                  char v7; // [sp+18h] [bp-18h]@5
                  char v8; // [sp+18h] [bp-18h]@19
                  char v9; // [sp+18h] [bp-18h]@44
                  char v10; // [sp+19h] [bp-17h]@0
                  char v11; // [sp+19h] [bp-17h]@19
                  char v12; // [sp+1Ah] [bp-16h]@4
                  char v13; // [sp+1Ah] [bp-16h]@21
                  char v14; // [sp+1Bh] [bp-15h]@10
                  char v15; // [sp+1Bh] [bp-15h]@38
                  char v16; // [sp+1Ch] [bp-14h]@44
                  char v17; // [sp+1Dh] [bp-13h]@2
                  char v18; // [sp+1Dh] [bp-13h]@4
                  char v19; // [sp+1Fh] [bp-11h]@0
                  char v20; // [sp+1Fh] [bp-11h]@26
        char table[]="abcdefghijklmnopqrstuvwxyz0123456789";
        char a1[]="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
        int i=0;
        int j=0;
        int m;
        int n=1;
    
        for(j;j<36;j++){
                  a1[i]=table[j];
                  if ( v1 + 0x717BAD35 > 0xFFFFFFFF )
                    goto LABEL_75;
                  v17 = ((*(_BYTE *)a1 ^ 0x10) + 10) ^ 0x12;
                  v3 = ((((((v17 + 1) ^ 0x1B) + 6) ^ 0x39) + 8) ^ 0x29) + 8;
                  if ( ((unsigned __int8)((v3 ^ 0x3B) + 4) ^ 0xA) != 216 )
                    {m=1;
                    goto LABEL_88;}
                  if ( v1 + 4266592168 > 0xFFFFFFFF )
                    goto LABEL_15;
                    v18 = ((*(_BYTE *)(a1 + 1) ^ 5) + 10) ^ 0x16;
                  v12 = ((v18 + 8) ^ 0x2F) + 9;;
                  while ( 1 )
                  {
                    v7 = (v12 ^ 0x32) + 10;
                    if ( ((unsigned __int8)((((v7 ^ 0xB) + 6) ^ 0x2B) + 6) ^ 6) != 132 )
                      {m=2;
                    goto LABEL_88;}
                    if ( v1 + 3722410627 <= 0xFFFFFFFF )
                    {
                      v18 = ((*(_BYTE *)(a1 + 2) ^ 0x26) + 10) ^ 0x14;
                      v7 = ((((v18 + 7) ^ 7) + 7) ^ 9) + 5;
                    }
                    do
                    {
                      v6 = v7 ^ 0x3D;
                      if ( ((unsigned __int8)((((v7 ^ 0x3D) + 6) ^ 0x31) + 5) ^ 0xC) != 40 )
                        {m=3;
                    goto LABEL_88;}
                      if ( v1 + 2919940649 > 0xFFFFFFFF )
                        goto LABEL_83;
                      v18 = ((*(_BYTE *)(a1 + 3) ^ 0x2F) + 5) ^ 0x29;
                      v14 = (v18 + 10) ^ 0x1F;
                      if ( ((unsigned __int8)(((((((v18 + 10) ^ 0x27) + 6) ^ 0x31) + 9) ^ 0x26) + 8) ^ 0x32) != 12 )
                        {m=4;
                    goto LABEL_88;}
                      if ( v1 + 1939742939 > 0xFFFFFFFF )
                        goto LABEL_82;
                      v18 = *(_BYTE *)(a1 + 4) ^ 0x1F;
                      v7 = ((((v18 + 9) ^ 0x21) + 4) ^ 0x27) + 9;
                      if ( ((unsigned __int8)((((v7 ^ 0x2D) + 7) ^ 0x19) + 9) ^ 0x39) != 52 )
                        {m=5;
                    goto LABEL_88;}
                    }
                    while ( v1 + 1190965352 > 0xFFFFFFFF );
                    v17 = (*(_BYTE *)(a1 + 5) + 9) ^ 0x26;
                    v3 = ((((((v17 + 9) ^ 0x10) + 4) ^ 0x32) + 1) ^ 5) + 1;
                LABEL_15:
                    if ( ((unsigned __int8)((v3 ^ 0xA) + 7) ^ 0x12) != 94 )
                      {m=6;
                    goto LABEL_88;}
                    if ( v1 + 4112981141 > 0xFFFFFFFF )
                      goto LABEL_59;
                    if ( ((unsigned __int8)((((((((((*(_BYTE *)(a1 + 6) ^ 0x17) + 6) ^ 0x27) + 1) ^ 0x26) + 6) ^ 1) + 2) ^ 0x16) + 7) ^ 0x1C) != 45 )
                      {m=7;
                    goto LABEL_88;}
                    if ( v1 + 2939247801 > 0xFFFFFFFF )
                      goto LABEL_31;
                    v19 = *(_BYTE *)(a1 + 7) ^ 0x1A;
                    v11 = (((((v19 + 8) ^ 9) + 3) ^ 0x25) + 4) ^ 0x30;
                    v8 = v11 + 7;
                    if ( ((unsigned __int8)((((v11 + 7) ^ 0x24) + 5) ^ 0x2F) ^ 0x2B) != 79 )
                      {m=8;
                    goto LABEL_88;}
                    if ( v1 + 512742110 <= 0xFFFFFFFF )
                      break;
                    while ( 1 )
                    {
                      if ( ((unsigned __int8)((((v8 ^ 0x39) + 3) ^ 0x36) + 3) ^ 0x16) != 171 )
                        {m=9;
                    goto LABEL_88;}
                      if ( v1 + 3944755611 <= 0xFFFFFFFF )
                      {
                        v19 = *(_BYTE *)(a1 + 28) ^ 0x30;
                        v10 = (((((v19 + 5) ^ 0x11) + 8) ^ 0x13) + 8) ^ 0x21;
                LABEL_75:
                        v2 = (((v10 ^ 0x35) + 4) ^ 0x19) + 7;
                        goto LABEL_76;
                      }
                LABEL_32:
                      v4 = v8 ^ 0x1B;
                      if ( ((unsigned __int8)((v8 ^ 9) + 6) ^ 0x21) != 107 )
                        {m=10;
                    goto LABEL_88;}
                      if ( v1 + 2337003254 <= 0xFFFFFFFF )
                      {
                        v18 = ((*(_BYTE *)(a1 + 13) ^ 0x2C) + 9) ^ 0x35;
                        v12 = (v18 + 7) ^ 0x29;
                        v5 = ((((v18 + 7) ^ 0x21) + 8) ^ 0xA) + 6;
                        if ( ((unsigned __int8)((v5 ^ 0x26) + 10) ^ 0x2D) != 81 )
                          {m=11;
                    goto LABEL_88;}
                        if ( v1 + 491014096 > 0xFFFFFFFF )
                          goto LABEL_42;
                        v17 = *(_BYTE *)(a1 + 14) ^ 0x1F;
                        v3 = ((((v17 + 5) ^ 0x3A) + 2) ^ 0x27) + 2;
                        if ( ((unsigned __int8)((v3 ^ 0x1B) + 9) ^ 0x16) != 61 )
                          {m=12;
                    goto LABEL_88;}
                        if ( v1 + 979202538 > 0xFFFFFFFF )
                          goto LABEL_15;
                        v19 = *(_BYTE *)(a1 + 15) ^ 0x10;
                        v15 = (((v19 + 10) ^ 0x14) + 7) ^ 3;
                LABEL_39:
                        v11 = (v15 + 1) ^ 0x1E;
                        v4 = ((v11 + 9) ^ 0x1A) + 7;
                        if ( ((unsigned __int8)((v4 ^ 0x24) + 2) ^ 3) != 234 )
                          {m=13;
                    goto LABEL_88;}
                        if ( v1 + 794401946 <= 0xFFFFFFFF )
                          break;
                      }
                      while ( 1 )
                      {
                        if ( ((unsigned __int8)((v4 ^ 0x2D) + 5) ^ 2) != 237 )
                          {m=14;
                    goto LABEL_88;}
                        if ( v1 + 894565626 <= 0xFFFFFFFF )
                        {
                          v18 = ((*(_BYTE *)(a1 + 30) ^ 6) + 9) ^ 0x19;
                          v14 = (v18 + 6) ^ 0x2C;
                          goto LABEL_82;
                        }
                LABEL_69:
                        v2 = ((((v11 + 8) ^ 0x1B) + 3) ^ 0x1E) + 10;
                        if ( (v2 ^ 0x34) != 181 )
                          {m=15;
                    goto LABEL_88;}
                        if ( v1 + 604121011 <= 0xFFFFFFFF )
                          break;
                LABEL_76:
                        if ( (v2 ^ 0x12) != 111 )
                          {m=16;
                    goto LABEL_88;}
                        if ( v1 + 2158141150 > 0xFFFFFFFF )
                          goto LABEL_49;
                        v19 = *(_BYTE *)(a1 + 29) ^ 0x11;
                        v11 = (((((v19 + 9) ^ 6) + 1) ^ 0x15) + 1) ^ 0x3E;
                        v4 = ((v11 + 9) ^ 0xF) + 9;
                      }
                      v19 = *(_BYTE *)(a1 + 27) ^ 0x36;
                      v11 = (((((v19 + 3) ^ 0x14) + 2) ^ 0x3B) + 7) ^ 0x24;
                      v8 = v11 + 9;
                    }
                    v18 = ((*(_BYTE *)(a1 + 16) ^ 4) + 3) ^ 7;
                    v12 = v18 + 15;
                    v5 = ((((v18 + 15) ^ 0x33) + 6) ^ 0x1C) + 7;
                LABEL_42:
                    if ( ((unsigned __int8)((v5 ^ 0x2A) + 8) ^ 0x2D) != 98 )
                      {m=17;
                    goto LABEL_88;}
                    if ( v1 + 3124487324 <= 0xFFFFFFFF )
                    {
                      v18 = ((*(_BYTE *)(a1 + 17) ^ 0x20) + 3) ^ 0x1D;
                      v16 = v18 + 9;
                      v9 = ((((v18 + 9) ^ 0x3F) + 8) ^ 8) + 10;
                      if ( ((unsigned __int8)((((v9 ^ 0x23) + 3) ^ 0x11) + 5) ^ 0x28) != 101 )
                       {m=18;
                    goto LABEL_88;}
                      if ( v1 + 4270394038 <= 0xFFFFFFFF )
                      {
                        v18 = ((*(_BYTE *)(a1 + 18) ^ 0x22) + 5) ^ 0x12;
                        v14 = (v18 + 8) ^ 0xA;
                        if ( ((unsigned __int8)(((((((v18 + 8) ^ 0x25) + 1) ^ 0x29) + 4) ^ 0x1F) + 4) ^ 0xF) == 72 )
                        {
                          if ( v1 + 38557390 > 0xFFFFFFFF )
                            goto LABEL_52;
                          v19 = *(_BYTE *)(a1 + 19) ^ 0x11;
                LABEL_49:
                          v18 = (v19 + 6) ^ 0x2E;
                          goto LABEL_50;
                        }
                        m=32;
                LABEL_88:
                       if(n==m)
                       {
                           goto label;
                       }
                       else
                       {
                           n=m;
                           i++;
                           j=-1;
                           goto label;
    
                       }
                      }
                      goto LABEL_62;
                    }
                  }
                  v18 = ((*(_BYTE *)(a1 + 8) ^ 0xC) + 1) ^ 0x34;
                  v14 = (v18 + 1) ^ 6;
                  v13 = v14 + 8;
                  if ( ((unsigned __int8)(((((((v14 + 8) ^ 0x27) + 8) ^ 0x3B) + 2) ^ 0x23) + 3) ^ 0x16) != 76 )
                    {m=19;
                    goto LABEL_88;}
                  if ( v1 + 1600544217 > 0xFFFFFFFF )
                    goto LABEL_56;
                  v17 = ((*(_BYTE *)(a1 + 9) ^ 0xA) + 4) ^ 0x3D;
                  if ( ((unsigned __int8)(((((((((v17 + 10) ^ 0x37) + 1) ^ 0x19) + 1) ^ 0x23) + 9) ^ 0x38) + 4) ^ 0x29) != 67 )
                    {m=20;
                    goto LABEL_88;}
                  if ( v1 + 2943137373 <= 0xFFFFFFFF )
                  {
                    v20 = *(_BYTE *)(a1 + 10) ^ 0xD;
                LABEL_27:
                    v17 = (v20 + 5) ^ 0x3A;
                    if ( ((unsigned __int8)(((((((((v17 + 6) ^ 0x28) + 5) ^ 0x1B) + 1) ^ 0x1D) + 7) ^ 0x39) + 3) ^ 0x36) != 82 )
                      {m=21;
                    goto LABEL_88;}
                    if ( v1 + 2820845284 <= 0xFFFFFFFF )
                    {
                      v18 = ((*(_BYTE *)(a1 + 11) ^ 0x20) + 3) ^ 0x3C;
                      if ( ((unsigned __int8)(((((((v18 + 10) ^ 0x3A) + 1) ^ 3) + 11) ^ 0x36) + 7) ^ 0x29) != 209 )
                        {m=22;
                    goto LABEL_88;}
                      if ( v1 + 1784190321 > 0xFFFFFFFF )
                        goto LABEL_50;
                LABEL_31:
                      v19 = *(_BYTE *)(a1 + 12) ^ 9;
                      v11 = (((((v19 + 3) ^ 0x2F) + 1) ^ 0x38) + 1) ^ 0x3F;
                      v8 = v11 + 8;
                      goto LABEL_32;
                    }
                  }
                  while ( 1 )
                  {
                LABEL_59:
                    if ( ((unsigned __int8)(((((((((v17 + 5) ^ 0x3A) + 7) ^ 0x1A) + 7) ^ 0xC) + 2) ^ 0x28) + 5) ^ 0x2A) != 101
                      || v1 + 2621123087 > 0xFFFFFFFF )
                      {m=23;
                    goto LABEL_88;}
                    v18 = *(_BYTE *)(a1 + 23) ^ 0x23;
                    v16 = v18 + 3;
                    v9 = ((((v18 + 3) ^ 9) + 3) ^ 0x1B) + 9;
                LABEL_62:
                    if ( ((unsigned __int8)((((v9 ^ 0x11) + 2) ^ 0x3A) + 8) ^ 0xC) != 115 )
                      {m=24;
                    goto LABEL_88;}
                    if ( v1 + 649342143 > 0xFFFFFFFF )
                      break;
                    v17 = ((*(_BYTE *)(a1 + 24) ^ 0x29) + 2) ^ 0x18;
                    if ( ((unsigned __int8)(((((((v17 + 3) ^ 8) + 5) ^ 0x22) + 10) ^ 0x22) + 5) ^ 0x3A) != 98 )
                     {m=25;
                    goto LABEL_88;}
                    if ( v1 + 975235895 <= 0xFFFFFFFF )
                    {
                      v19 = *(_BYTE *)(a1 + 25) ^ 0x2B;
                      v15 = (((v19 + 1) ^ 0x1F) + 7) ^ 2;
                      if ( ((unsigned __int8)(((((((v15 + 5) ^ 0x20) + 5) ^ 0x37) + 4) ^ 8) + 9) ^ 0x1F) != 129 )
                        {m=26;
                    goto LABEL_88;}
                      if ( v1 + 1883000249 <= 0xFFFFFFFF )
                      {
                        v19 = *(_BYTE *)(a1 + 26) ^ 9;
                        v11 = (((((v19 + 3) ^ 0x35) + 3) ^ 0x2E) + 10) ^ 0xE;
                        goto LABEL_69;
                      }
                      goto LABEL_39;
                    }
                  }
                  while ( 1 )
                  {
                    v14 = v16 ^ 0xB;
                    if ( ((unsigned __int8)((((((((v16 ^ 0xB) + 6) ^ 0x24) + 9) ^ 0x1E) + 4) ^ 0x2A) + 5) ^ 0x21) != 98 )
                      {m=27;
                    goto LABEL_88;}
                LABEL_52:
                    if ( v1 + 188860014 <= 0xFFFFFFFF )
                    {
                      v20 = *(_BYTE *)(a1 + 20) ^ 0x3C;
                      if ( ((unsigned __int8)((((((((v20 + 4) ^ 0x27) + 3) ^ 4) + 9) ^ 3) + 4) ^ 0x36) ^ 0x27) != 150 )
                       {m=28;
                    goto LABEL_88;}
                      if ( v1 + 3222692128 > 0xFFFFFFFF )
                        goto LABEL_27;
                      v18 = ((*(_BYTE *)(a1 + 21) ^ 0x2C) + 1) ^ 0x28;
                      v14 = (v18 + 5) ^ 0x27;
                      v13 = (v18 + 5) ^ 0x27;
                LABEL_56:
                      if ( ((unsigned __int8)(((((v13 ^ 0x3A) + 7) ^ 1) + 10) ^ 0x2F) ^ 0x1B) != 69 )
                        {m=29;
                    goto LABEL_88;}
                      if ( v1 + 1175584883 <= 0xFFFFFFFF )
                      {
                        v17 = ((*(_BYTE *)(a1 + 22) ^ 0x33) + 4) ^ 0x38;
                        goto LABEL_59;
                      }
                    }
                LABEL_82:
                    v6 = (((v14 + 7) ^ 0xF) + 10) ^ 0x24;
                LABEL_83:
                    if ( ((unsigned __int8)(((v6 + 7) ^ 8) + 7) ^ 0x2E) != 187 )
                      {m=30;
                    goto LABEL_88;}
                    if ( v1 + 4239419545 <= 0xFFFFFFFF )
                    {
                      if ( ((unsigned __int8)((((((((((((*(_BYTE *)(a1 + 31) ^ 8) + 7) ^ 0x2C) + 6) ^ 0x3C) + 3) ^ 0x17) + 8) ^ 0x30) + 6) ^ 0x3C)
                                            + 6) ^ 0x17) == 56 )
                      {
                        printf("Congratulations!The flag is %s
    ", a1);
                        system("pause");
                      }
                      {m=31;
                    goto LABEL_88;}
                    }
                LABEL_50:
                    v16 = v18 + 7;
                  }
            label:continue;
            }
    
    }
  • 相关阅读:
    Dynamic CRM 2013学习笔记(四十二)流程5
    Dynamic CRM 2013学习笔记(四十一)流程4
    Dynamic CRM 2013学习笔记(四十)流程3
    Dynamic CRM 2013学习笔记(三十九)流程2
    Dynamic CRM 2013学习笔记(三十八)流程1
    Dynamic CRM 2013学习笔记(三十七)自定义审批流7
    STL
    Step by Step iOS Project In Action
    STL
    STL
  • 原文地址:https://www.cnblogs.com/lomooo/p/5862782.html
Copyright © 2011-2022 走看看