攻防世界 逆向 EasyRE

攻防世界 逆向 EasyRE

(原创)
原题如下:
攻防世界 逆向 EasyRE_第1张图片
下载文件:
在这里插入图片描述
查看exe文件的脱壳信息并用IDA打开。
攻防世界 逆向 EasyRE_第2张图片
Shift+F12查看字符串窗口,发现flag,但是并不对。
注意到下面的right\n,查看其伪代码。
此函数源代码如下:

int sub_401080()
{
  unsigned int v0; // kr00_4
  signed int v1; // edx
  char *v2; // esi
  char v3; // al
  unsigned int v4; // edx
  int v5; // eax
  __int128 v7; // [esp+2h] [ebp-24h]
  __int64 v8; // [esp+12h] [ebp-14h]
  int v9; // [esp+1Ah] [ebp-Ch]
  __int16 v10; // [esp+1Eh] [ebp-8h]

  sub_401020(&unk_402150, v7);
  v9 = 0;
  v10 = 0;
  v7 = 0i64;
  v8 = 0i64;
  sub_401050((const char *)&unk_402158, (unsigned int)&v7);
  v0 = strlen((const char *)&v7);
  if ( v0 >= 0x10 && v0 == 24 )
  {
    v1 = 0;
    v2 = (char *)&v8 + 7;
    do
    {
      v3 = *v2--;
      byte_40336C[v1++] = v3;
    }
    while ( v1 < 24 );
    v4 = 0;
    do
    {
      byte_40336C[v4] = (byte_40336C[v4] + 1) ^ 6;
      ++v4;
    }
    while ( v4 < 0x18 );
    v5 = strcmp(byte_40336C, "xIrCj~

主要部分为下图中的代码。
攻防世界 逆向 EasyRE_第3张图片
主要的变量为v5、byte_40336C和其他几个表示位序的变量。
编写C语言的代码,如下。
攻防世界 逆向 EasyRE_第4张图片
运行得到flag。

你可能感兴趣的:(逆向)