1.查壳,发现upx壳,先脱壳,再放进32位ida中
__main();
v4 = 42;
v5 = 70;
v6 = 39;
v7 = 34;
v8 = 78;
v9 = 44;
v10 = 34;
v11 = 40;
v12 = 73;
v13 = 63;
v14 = 43;
v15 = 64;
printf("Please input:");
scanf("%s", &v19);
if ( (_BYTE)v19 == 65 && HIBYTE(v19) == 67 && v20 == 84 && v21 == 70 && v22 == 123 && v26 == 125 )
{
v16 = v23;
v17 = v24;
v18 = v25;
for ( i = 0; i <= 11; ++i )
{
if ( *(&v4 + i) != _data_start__[*((_BYTE *)&v16 + i) - 1] )
return 0;
}
printf("You are correct!");
result = 0;
}
else
{
result = 0;
}
return result;
}
2.可以看出v4的值是 _data_start__数组中每一位-1得到的。可以看到 _data_start__的值是
编写脚本可以得到结果:
所以答案是flag{U9X_1S_W6@T?}