首页
社区
课程
招聘
[原创]第一题WannaLOL分析
发表于: 2017-6-1 17:54 2761

[原创]第一题WannaLOL分析

2017-6-1 17:54
2761

答案: 1555

分析:
1. 首先strlen(s)为4
2. 其次s0, s3 为 1, 5 . 所以sn为 1**5
3. 表达式 ( ss2 - ss0 / 5)  * ss1 * 16 = 384

=>
( ss2 - 1 / 5)  * ss1 = 24

ss2 = 1/5  +  24/ss1

ss2为整数,且>=1。 所以:ss1 可能值为5,10,15,20,25,30.

ss1 = 5
ss2 = 5
有意义: SN=1555
...

ss1取 10,15,20,25 , ss2都不是整数.

ss1=30
ss2=1
有意义: SN=1N15

int check_sn()
{
  double ss2; // st7@8
  double ss0; // st6@8
  const CHAR *v3; // [esp-8h] [ebp-24h]@8
  CHAR s0; // [esp+0h] [ebp-1Ch]@1
  char s3; // [esp+1h] [ebp-1Bh]@3
  char s2; // [esp+2h] [ebp-1Ah]@4
  char s1; // [esp+3h] [ebp-19h]@5
  int c; // [esp+18h] [ebp-4h]@8

  GetDlgItemTextA(hDlg, 1001, &s0, 21);
  Sleep(500u);
  if ( strlen(&s0) != 4 || s0 == 0x30 || s3 == 0x30 || s2 == 0x30 || s1 == 0x30 || s0 != '1' || s3 != '5' )
  {
    v3 = Caption;
  }
  else
  {
    c = s2 - 0x30;
    ss2 = (double)c;
    c = s0 - 0x30;
    ss0 = (double)c;                        
    c = s1 - 0x30;
    *(float *)&c = (ss2 - ss0 / (double)5) * (double)c * 16.0;
    v3 = aCrackme2017Ctf;
    if ( *(float *)&c == 384.0 )
      return MessageBoxA(hWnd, aRegistrationSu, aCrackme2017Ctf, 0);
  }
  return MessageBoxA(hWnd, Text, v3, 0);
}


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

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