-
-
[原创]第一题
-
发表于: 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期)
赞赏
看原图
赞赏
雪币:
留言: