首页
社区
课程
招聘
[原创]第六题 Repwn WriteUp
发表于: 2019-3-14 23:01 3089

[原创]第六题 Repwn WriteUp

2019-3-14 23:01
3089
首先来到下面这个函数
int __thiscall fst_sub_4014C0(void *this)
{
  unsigned int v1; // ebx
  char *Str; // [esp+0h] [ebp-68h]
  char v4[4]; // [esp+10h] [ebp-58h]
  int v5; // [esp+20h] [ebp-48h]
  int v6; // [esp+24h] [ebp-44h]
  int v7; // [esp+28h] [ebp-40h]
  int v8; // [esp+2Ch] [ebp-3Ch]
  int v9; // [esp+30h] [ebp-38h]
  int v10; // [esp+34h] [ebp-34h]
  int v11; // [esp+38h] [ebp-30h]
  int v12; // [esp+3Ch] [ebp-2Ch]
  char v13; // [esp+40h] [ebp-28h]

  sub_404930(0x10u, this, Str);
  sub_4044B0();
  v1 = 0;
  v5 = 'yt^';
  v6 = '+pLc';
  v7 = 'a+SG';
  v8 = 'G-QG';
  v9 = 'Gl(V';
  v10 = ')y}J';
  v11 = 'SGA)';
  v12 = 'ea+';
  strcpy(v4, "Ansome_Is_Wrong");
  while ( v1 < strlen(&v5) )
    *(&v5 + v1++) ^= 0x18u;
  puts("Please Input Your Key_ Now!");
  scanf("%s", &v13);
  if ( m_12_1key_sub_4012F0(&v13) )//判断
  {
    hou_4_1keyycsub_401460(&v13);
    system("pause");
  }
  else
  {
    puts(v4);
  }
  return 0;
}
关注第一个判断
signed int __cdecl m_12_1key_sub_4012F0(int a1)
{
  signed int v1; // ecx
  signed int v2; // edx
  signed int result; // eax
  int v4; // [esp+0h] [ebp-38h]
  int v5; // [esp+4h] [ebp-34h]
  int v6; // [esp+8h] [ebp-30h]
  char v7; // [esp+Ch] [ebp-2Ch]
  int v8; // [esp+10h] [ebp-28h]
  int v9; // [esp+14h] [ebp-24h]
  int v10; // [esp+18h] [ebp-20h]
  int v11; // [esp+1Ch] [ebp-1Ch]
  int v12; // [esp+20h] [ebp-18h]

  v1 = 8;
  v2 = 0;
  v8 = 'ruoY';
  v9 = 'pnI_';
  v10 = 'I_tu';
  v11 = 'rW_s';
  v12 = 'gno';
  v4 = '0Y1X';
  v5 = 't3Nu';
  v6 = 'd00G';
  v7 = 0;
  while ( *(&v4 + v2) == *(v1 + a1) )
  {
    ++v2;
    ++v1;
    if ( v2 > 11 )                              // 判断[8-19]位是否相等
                                                // 所以输入的第9-20位为X1Y0uN3tG00d
    {
      result = 1;
      if ( *(a1 + 20) == 'H' )                  // 第[20]位是'H'
        return result;                          // 输入的第9-21为X1Y0uN3tG00dH否则返回false
      return 0;
    }
  }
  return 0;
}
确定输入的9-21位是X1Y0uN3tG00dH
判断内的第2个函数
int __cdecl hou_4_1keyycsub_401460(char *Str)
{
  char Dest; // [esp+8h] [ebp-10h]

  if ( strlen(Str) == 24 )//输入为24位
  {
    if ( q_8_fc_sub_4013B0(Str) )//跟进
    {
      Str[20] -= 0x58;
      Str[21] -= 0x46;
      Str[22] -= 3;
      Str[23] -= 0x6B;
      strcpy(&Dest, Str);
    }
  }
  else
  {
    printf("String Length is Wrong");
  }
  return 0;
}

signed int __cdecl q_8_fc_sub_4013B0(int a1)
{
  int v1; // ebx
  int v2; // ecx
  int v3; // esi

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

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