题目无壳,ida定位main分析函数流程
__int64 sub_7FF65CDA1290()
{
bool v0; // si
__int64 v1; // rax
unsigned __int8 *v2; // rax
unsigned __int8 *v3; // rbx
int v4; // er10
__int64 v5; // r11
_BYTE *v6; // r9
void **v7; // r8
__int64 v8; // rdi
__int64 v9; // r15
__int64 v10; // r12
__int64 v11; // rbp
signed int v12; // ecx
unsigned __int8 *v13; // rdx
__int64 v14; // rdi
__int64 *v15; // r14
__int64 v16; // rbp
__int64 v17; // r13
_QWORD *v18; // rdi
__int64 v19; // r12
__int64 v20; // r15
__int64 v21; // rbp
__int64 v22; // rdx
__int64 v23; // rbp
__int64 v24; // rbp
__int64 v25; // r10
__int64 v26; // rdi
__int64 v27; // r8
bool v28; // dl
__int64 v29; // rax
void *v30; // rdx
__int64 v31; // rax
__int64 v32; // rax
_BYTE *v33; // rcx
__int64 v35; // [rsp+20h] [rbp-68h]
void *Memory; // [rsp+30h] [rbp-58h]
unsigned __int64 v37; // [rsp+40h] [rbp-48h]
unsigned __int64 v38; // [rsp+48h] [rbp-40h]
v0 = 0;
v37 = 0i64;
v38 = 15i64;
LOBYTE(Memory) = 0;
v1 = sub_7FF65CDA19C0(std::cout, "I'm a first timer of Logic algebra , how about you?");
std::basic_ostream<char,std::char_traits<char>>::operator<<(v1, sub_7FF65CDA1B90);
sub_7FF65CDA19C0(std::cout, "Let's start our game,Please input your flag:");
sub_7FF65CDA1DE0(std::cin, &Memory); // 输入点
std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_7FF65CDA1B90);
if ( v37 - 5 > 25 ) // 长度小于30
{
v32 = sub_7FF65CDA19C0(std::cout, "Wrong input ,no GXY{} in input words");
std::basic_ostream<char,std::char_traits<char>>::operator<<(v32, sub_7FF65CDA1B90);
goto LABEL_45;
}
v2 = (unsigned __int8 *)sub_7FF65CDA24C8(32ui64);
v3 = v2;
if ( v2 )
{
*(_QWORD *)v2 = 0i64;
*((_QWORD *)v2 + 1) = 0i64;
*((_QWORD *)v2 + 2) = 0i64;
*((_QWORD *)v2 + 3) = 0i64;
}
else
{
v3 = 0i64;
}
v4 = 0;
if