GFSJ1130-【ezmaze】
迷宫
main函数
__int64 __fastcall main()
{
_main();
printf("Welcome to the maze game. Try to get out of the maze and get the flag.\n");
initmap();
scanf("%s", Input);
if ( check(Input) )
printf("Congratulations on coming out of the maze! The flag is 'flag{your input}'\n");
else
printf("What a pity. You're still trapped in the maze :(\n");
system_0("pause");
return 0;
}
check 能看到是一个简单的迷宫
bool __fastcall check(char *ch_0)
{
int v2; // eax
char *v3; // rcx
unsigned int v4; // r8d
unsigned int v5; // edx
char *v6; // r11
char v7; // al
v2 = strlen(ch_0);
if ( v2 > 0 )
{
v3 = ch_0;
v4 = 0;
v5 = 0;
v6 = &ch_0[v2 - 1 + 1];
while ( 1 )
{
v7 = *v3;
if ( *v3 == 115 )
{
++v5;
}
else if ( v7 > 115 )
{
if ( v7 != 119 )
return 0;
--v5;
}
else if ( v7 == 97 )
{
--v4;
}
else
{
if ( v7 != 100 )
return 0;
++v4;
}
if ( !realmap[10 * v5 + v4] || v5 > 9 || v4 > 9 )
break;
if ( v6 == ++v3 )
return v4 == 9 && v5 == 9;
}
}
return 0;
}
生成表的函数
void __cdecl initmap()
{
char *v0; // r8
int *v1; // r9
int v2; // eax
char *v3; // rdx
v0 = realmap;
v1 = gamemap;
do
{
v2 = *v1;
v3 = v0;
do
{
(--v3)[10] = v2 & 1;
v2 >>= 1;
}
while ( v2 );
v0 += 10;
*v1++ = 0;
}
while ( v0 != algn_1400150A4 );
}
不用下断点 因为scanf会自动停下来 停下来不输入就能得到迷宫图
exp
这个没有exp 因为我已经很久没有写过迷宫的脚本了 全都一把梭了 哈哈哈哈 不过我把迷宫图提取出来了 方便你们拿取
迷宫图
1, 0, 0, 0, 1, 0, 0, 1, 0, 0,
1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
1, 1, 1, 0, 1, 1, 1, 0, 1, 1,
1, 1, 1, 1, 0, 0, 0, 1, 1, 0,
1, 0, 1, 0, 0, 0, 0, 1, 1, 1,
1, 0, 1, 1, 0, 0, 1, 1, 0, 0,
1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 1, 0, 1, 0, 0, 0, 0, 0, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 1
flag
flag{sddssdddwddwddsssaasassssddd}
一把梭
评论