首页
社区
课程
招聘
[原创]第一题
发表于: 2017-6-1 17:14 1968

[原创]第一题

2017-6-1 17:14
1968

MessageBoxA下断点,向上翻,找到关键函数地址:0x4011F4,修改两处e8为90,ida载入,定位到0x4011F4,F5,C代码如下:

int sub_4011F4()
{
  double v0; // st7@8
  double v1; // st6@8
  const CHAR *v3; // [sp-Ch] [bp-28h]@9
  const CHAR *v4; // [sp-8h] [bp-24h]@8
  CHAR key[4]; // [sp+0h] [bp-1Ch]@1
  int v6; // [sp+18h] [bp-4h]@8

  GetDlgItemTextA(hDlg, 1001, key, 21);
  Sleep(0x1F4u);
  if ( strlen(key) != 4
    || key[0] == '0'
    || key[1] == '0'
    || key[2] == '0'
    || key[3] == '0'
    || key[0] != '1'
    || key[1] != '5' )
  {
    v4 = Caption;
    goto LABEL_11;
  }
  v6 = key[2] - '0';
  v0 = (double)v6;
  v6 = key[0] - '0';
  v1 = (double)v6;
  v6 = key[3] - '0';
  *(float *)&v6 = (v0 - v1 / (double)5) * (double)v6 * 16.0;
  v4 = aCrackme2017Ctf;
  if ( *(float *)&v6 != 384.0 )
  {
LABEL_11:
    v3 = Text;
    return MessageBoxA(hWnd, v3, v4, 0);
  }
  v3 = aRegistrationSu;
  return MessageBoxA(hWnd, v3, v4, 0);
}

经分析key为4位,假设key第一位为a,第二位为b,第三位为c,第四位为d,能够得到如下关系:

a = 1,b = 5,384 = (c - a/5)*d*16 --》 24 = (c - 1/5)*d,肉眼就能计算出来 
c = 5,d = 5,即key = 1555


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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