首页
论坛
课程
招聘
[原创]签到题 身在何处WP
2021-11-15 17:16 773

[原创]签到题 身在何处WP

2021-11-15 17:16
773

先查字符串,根据提示信息查交叉引用找到验证函数地址为:0x00041340

//.text:00041340
int __cdecl check(HWND hDlg)
{
  int v1; // ebx
  int crc_account; // ebx
  int i_seri; // eax
  int result; // eax
  signed int v5; // [esp+Ch] [ebp-260h]
  char a1[200]; // [esp+10h] [ebp-25Ch] BYREF
  CHAR account[200]; // [esp+D8h] [ebp-194h] BYREF
  CHAR seri[200]; // [esp+1A0h] [ebp-CCh] BYREF

  memset(account, 0, sizeof(account));
  memset(a1, 0, sizeof(a1));
  memset(seri, 0, sizeof(seri));
  v1 = GetDlgItemTextA(hDlg, 1000, account, 201);
  if ( v1
    && (v5 = GetDlgItemTextA(hDlg, 1001, seri, 201),
        crc_account = crc32(account, v1),
        strspn(seri, "0123456789") == strlen(seri))         //序列号字符集为[0-9]
    && v5 <= 10                           //序列号长度 <= 10
    && (i_seri = atoi(seri)) != 0                //根据提供的一对账号/序列号,可知crc32("52a1ed5a")==0x13B88C77
    && (itoa(crc_account ^ i_seri, a1, 16), crc32(a1, 8) == 0x13B88C77) ) //等价检查(cac_account^i_seri) == 0x52a1ed5a
  {
    SetDlgItemTextA(hDlg, 1001, "Success!");
    result = 1;
  }
  else
  {
    SetDlgItemTextA(hDlg, 1001, "Wrong Serial!");
    result = 0;
  }
  return result;
}

根据验证逻辑可知序列号为:

seri = itoa(crc32("KCTF")^0x52a1ed5a) //10进制字符串



【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

最后于 2021-11-15 17:21 被Anakin Stone编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回