1.ooo
ooo
IDA打开查找字符串找到关键函数
sub_410DF0((unsigned int)"give me a flag: ", a2, a3, a4, a5, a6);
sub_418970(uaddr2, a2, v6, v7, v8, v9);//输入flag
v11 = v14 ^ HIBYTE(uaddr2[1]) ^ BYTE1(v14);
for ( i = 0; i <= 41; ++i )
*((_BYTE *)uaddr2 + i) ^= v11; //对flag做异或处理
if ( (unsigned int)sub_401DE7((__int64)uaddr2) )//对flag进行判断
{
sub_418C70("okk");
sub_410330(0LL);
}
sub_418C70("nono, may be.... ");
result = 0LL;
if ( __readfsqword(0x28u) != v26 )
sub_454840();
return result;
查看sub_401DE7
:
_int64 __fastcall sub_401DE7(__int64 a1)
{
int i; // [rsp+14h] [rbp-4h]
for ( i = 0; i <= 41; ++i )
{
if ( *(_BYTE *)(i + a1) != (unsigned __int8)dword_4C0100[i] )
return 0LL;
}
return 1LL;
}