未晴雾香 发表于 2021-5-12 23:56

ISCC的一道reverse题目

逆向算法不都是倒着写一遍吗,为啥出来个这个东西

我感觉写的也没有毛病啊
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <memory.h>
int __cdecl mix(char* a1, char* Str, int a3)
{
    char v3; // dl
    int result; // eax
    char v5; //
    int n; //
    int m; //
    int l; //
    size_t k; //
    int j; //
    int i; //

    for (i = 0; i < a3; ++i)
      a1 -= 64;
    for (j = 0; j < a3; ++j)
      a1 -= a1;
    for (k = 0; k < strlen(Str); ++k)
      Str %= 64;
    for (l = 0; l < a3; ++l)
      a1 += Str;
    for (m = 0; a3 / 2 > m; ++m)
    {
      v5 = a1;
      a1 = a1;
      a1 = v5;
    }
    for (n = 0; ; ++n)
    {
      result = n;
      if (n >= a3)
            break;
      if ((Str & 1) != 0)
            v3 = a1 + 2;
      else
            v3 = a1 + 1;
      a1 = v3;
    }
    return result;
}
void jiemi(char* flag) {
    char temp = {67,-33,20};
   
    for (int n = 0; ; ++n)
    {
      char v3;
      int result = n;
      if (n >= 3)
            break;
      if ((temp & 1)== 0)
             v3 = flag + 2;
      else
             v3 = flag + 1;
      flag = v3;

    }

    for (int m = 0; 3 / 2 > m; ++m)
    {
      int v5 = flag;
      flag = flag;
      flag = v5;
    }
   
    for (int l = 0; l < 3; ++l)
      flag =temp- temp;
    for (int j = 0; j < 3; ++j)
      flag =temp+ flag;
    for (int i = 0; i < 3; ++i)
      flag =temp+ 64;
}

int __cdecl main()
{
    char Str; // BYREF
    char v5; // BYREF
    int v6; //
    char flag; // BYREF
    char reverse; // BYREF
    int strlength; //
    int i; //

    v6 = 0;
    memset(v5, 0, 4 * (((Str - v5 + 64) & 0xFFFFFFFC) >> 2));
    Str = 67;
    Str = -33;
    Str = 20;
    v5 = 3;
    v5 = 13;
    v5 = 44;
    v5 = 9;
    v5 = 1;
    v5 = 23;
    v5 = 23;
    v5 = 8;
    v5 = -4;
    v5 = 43;
    v5 = -6;
    v5 = 20;
    v5 = 23;
    v5 = -7;
    v5 = 37;
    v5 = -11;
    v5 = 34;
    v5 = 61;
    v5 = -50;
    v5 = 24;
    v5 = 22;
    v5 = 10;
    memcpy(reverse, "REVERSE", sizeof(reverse));
    strlength = strlen(Str);
   
    jiemi(v5);
    puts(v5);
    puts("\nflag正确!");
    return 0;
}


文件下载地址
http://iscc.isclab.org.cn/static/uploads/d651b538a6ac6507c129a5d4339c0363/Analysis.exe






zhy27 发表于 2021-5-13 09:56

你看一下mix的参数,mix函数内部的Str应该是“REVERSE”
页: [1]
查看完整版本: ISCC的一道reverse题目