-
-
[原创]第一题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期)