题1-both

无壳
先不看wp自己试试
主函数
int __cdecl main(int argc, const char **argv, const char **envp)
{
int i; // eax
HANDLE Handles[2]; // [esp+8h] [ebp-Ch] BYREF
printf("plz input your flag:"); // 输出提示
scanf("%42s", inputflag);
Handles[0] = CreateThread(0, 0, StartAddress, 0, 0, 0);
Handles[1] = CreateThread(0, 0, loc_191200, 0, 0, 0);
CreateThread(0, 0, sub_191240, 0, 0, 0);
WaitForMultipleObjects(2u, Handles, 1, 0xFFFFFFFF);
for ( i = 0; i < 42; ++i )
{
if ( inputflag[i] != byte_192150[i] )
{
printf("error");
exit(0);
}
}
printf("win");
getchar();
return 0;
}

一开始我以为
scanf(“plz input your flag:”); // 输入v5=flag
这句是输入而且v5是输入
但上面截完图发现这句我改名的scanf其实应该是printf
后面%42s对应的byte_19336C才是存用户输入的“如123”
接着分析
Handles[0] = CreateThread(0, 0, StartAddress, 0, 0, 0);
Handles[1] = CreateThread(0, 0, loc_191200, 0, 0, 0);
这两句不太懂
查完后发现这两句是线程启动和保存线程地址的?
似乎和解密不大相关,继续去看
WaitForMultipleObjects(2u, Handles, 1, 0xFFFFFFFF);
还是不懂继续搜
没写完去看iscc了
放一下wp吧
晚会再来
评论(0)
暂无评论