64位exe
运行还是只有一个输入点,输错退出
ida查看字符串
等一个密码表.jpg
查看main函数
C++写的程序
int __cdecl main(int argc, const char **argv, const char **envp)
{
__int64 v3; // rax
__int64 v4; // rax
std::string result; // [rsp+20h] [rbp-60h]
std::string rightFlag; // [rsp+30h] [rbp-50h]
std::string str; // [rsp+40h] [rbp-40h]
char v9; // [rsp+4Fh] [rbp-31h]
std::string v10; // [rsp+50h] [rbp-30h]
_main();
std::string::string(&str);
std::allocator<char>::allocator(&v9);
std::string::string(&rightFlag, "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==", &v9);//加密后的flag
std::allocator<char>::~allocator(&v9);
v3 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "Please input your flag!!!!");
std::ostream::operator<<(v3, refptr__ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_);
std::operator>><char,std::char_traits<char>,std::allocator<char>>(refptr__ZSt3cin, &str);
std::string::string(&v10, &str);
base64Encode(&result);//加密函数
std::string::~string(&v10);
if ( std::operator==<char>(&result, &rightFlag) )//
v4 = std::operator<<<std::char_traits<char>>(refptr__ZSt4cout, "The flag is right!!!!!!!!!");
else
v4 = std::operator<<<std::