ELF ARM crackme 1337¶
Root-me challenge: If the binary file sends you 1337 you got the right password.
ARM, ELF 32-bit LSB
Decompile the code
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v4; // [sp+4h] [bp-30h]@2
const char **v5; // [sp+8h] [bp-2Ch]@1
int v6; // [sp+14h] [bp-20h]@3
int v7; // [sp+18h] [bp-1Ch]@3
int v8; // [sp+18h] [bp-1Ch]@6
int i; // [sp+18h] [bp-1Ch]@9
signed int v10; // [sp+1Ch] [bp-18h]@6
v5 = argv;
if ( argc > 1 )
{
v7 = 0;
v6 = xmalloc(32);
while ( v7 != 8 )
{
*(_DWORD *)(v6 + 4 * v7) = xmalloc(32);
memset(*(_DWORD *)(v6 + 4 * v7++), 10, 32);
}
*(_DWORD *)(v6 + 32) = 0;
v8 = 0;
v10 = 65;
while ( v8 != 31 )
*(_BYTE *)(*(_DWORD *)(v6 + 12) + v8++) = v10++;
*(_BYTE *)(*(_DWORD *)(v6 + 12) + 31) = 0;
for ( i = 0; v5[1][i]; ++i )
{
if ( v5[1][i] != *(_BYTE *)(*(_DWORD *)(v6 + 12) + i) )
return -1;
}
v4 = 1337;
}
else
{
v4 = -1;
}
return v4;
}
Analysis
The program receives the code from
argv.Uses
v5to compare the password with.Space was reserved for 32 characters.
v6is used to store the password.65 is
Ain ascii code.The password is 32 letters from
Aup to 32 characters.