[Asm] 纯文本查看 复制代码 int __cdecl main(int argc, const char **argv, const char **envp)
{
unsigned int v3; // edx
unsigned int v4; // ecx
__m128i v5; // xmm1
unsigned int v6; // esi
const __m128i *v7; // eax
__m128i v8; // xmm0
int v9; // eax
char v11; // [esp+0h] [ebp-CCh]
char v12; // [esp+1h] [ebp-CBh]
char v13; // [esp+64h] [ebp-68h]
char v14; // [esp+65h] [ebp-67h]
unsigned int v15; // [esp+C8h] [ebp-4h]
printf("please input your flag:");
v11 = 0;
memset(&v12, 0, 0x63u);
scanf("%s", &v11);
v13 = 0;
memset(&v14, 0, 0x63u);
sub_401000(&v15, &v13, (unsigned __int8 *)&v11, strlen(&v11));
v3 = v15;
v4 = 0;
if ( v15 )
{
if ( v15 >= 0x10 )
{
v5 = _mm_load_si128((const __m128i *)&xmmword_414F20);
v6 = v15 - (v15 & 0xF);
v7 = (const __m128i *)&v13;
do
{
v8 = _mm_loadu_si128(v7);
v4 += 16;
++v7;
_mm_storeu_si128((__m128i *)&v7[-1], _mm_xor_si128(v8, v5));
}
while ( v4 < v6 );
}
for ( ; v4 < v3; ++v4 )
*(&v13 + v4) ^= 0x25u;
}
v9 = strcmp(&v13, "this_is_a_simple_reverse_for_you");
if ( v9 )
v9 = -(v9 < 0) | 1;
if ( v9 )
printf("wrong\n");
else
printf("correct\n");
system("pause");
return 0;
} |