Reverse Engineering
Challenge
Link
baby-asm (100 pts)
Description
Solution
int __fastcall main(int argc, const char **argv, const char **envp)
{
__int64 v3; // rbx
__int64 v4; // rbx
__int64 v5; // rbx
__int64 v6; // rbx
__int64 v7; // rbx
__int64 v8; // rbx
__int64 v9; // rbx
__int64 v10; // rbx
__int64 v11; // rbx
__int64 v12; // rbx
__int64 v13; // rbx
__int64 v14; // rbx
__int64 v15; // rbx
__int64 v16; // rbx
__int64 v17; // rbx
__int64 v18; // rbx
_QWORD *v20; // [rsp+8h] [rbp-128h]
char s[8]; // [rsp+10h] [rbp-120h] BYREF
__int64 v22; // [rsp+18h] [rbp-118h]
__int64 v23; // [rsp+20h] [rbp-110h]
__int64 v24; // [rsp+28h] [rbp-108h]
__int64 v25; // [rsp+30h] [rbp-100h]
__int64 v26; // [rsp+38h] [rbp-F8h]
__int64 v27; // [rsp+40h] [rbp-F0h]
__int64 v28; // [rsp+48h] [rbp-E8h]
__int64 v29; // [rsp+50h] [rbp-E0h]
__int64 v30; // [rsp+58h] [rbp-D8h]
__int64 v31; // [rsp+60h] [rbp-D0h]
__int64 v32; // [rsp+68h] [rbp-C8h]
__int64 v33; // [rsp+70h] [rbp-C0h]
__int64 v34; // [rsp+78h] [rbp-B8h]
__int64 v35; // [rsp+80h] [rbp-B0h]
__int64 v36; // [rsp+88h] [rbp-A8h]
__int64 v37; // [rsp+90h] [rbp-A0h]
__int64 v38; // [rsp+98h] [rbp-98h]
__int64 v39; // [rsp+A0h] [rbp-90h]
__int64 v40; // [rsp+A8h] [rbp-88h]
__int64 v41; // [rsp+B0h] [rbp-80h]
__int64 v42; // [rsp+B8h] [rbp-78h]
__int64 v43; // [rsp+C0h] [rbp-70h]
__int64 v44; // [rsp+C8h] [rbp-68h]
__int64 v45; // [rsp+D0h] [rbp-60h]
__int64 v46; // [rsp+D8h] [rbp-58h]
__int64 v47; // [rsp+E0h] [rbp-50h]
__int64 v48; // [rsp+E8h] [rbp-48h]
__int64 v49; // [rsp+F0h] [rbp-40h]
__int64 v50; // [rsp+F8h] [rbp-38h]
__int64 v51; // [rsp+100h] [rbp-30h]
__int64 v52; // [rsp+108h] [rbp-28h]
unsigned __int64 v53; // [rsp+118h] [rbp-18h]
v53 = __readfsqword(0x28u);
v20 = mmap(0LL, 0x1000uLL, 7, 34, 0, 0LL);
if ( v20 == (_QWORD *)-1LL )
{
perror("mmap");
exit(1);
}
*v20 = code;
v20[1] = 0xC7480000002D358DLL;
v20[2] = 0xC0314800000029C2LL;
v20[3] = 0x1375063A1834078ALL;
v20[4] = 0xFF48C6FF48C7FF48LL;
v20[5] = 0x2021C0C748ED75CALL;
v20[6] = 0x2020C0C748C30000LL;
v20[7] = 0x282A5B5A5BC30000LL;
qmemcpy(v20 + 8, "*,c +y~~+.,.!)/ }}*yy{/~.{*}| !/}z*e", 36);
printf("Enter your flag: ");
fgets(s, 256, _bss_start);
v3 = v22;
*(_QWORD *)((char *)v20 + 100) = *(_QWORD *)s;
*(_QWORD *)((char *)v20 + 108) = v3;
v4 = v24;
*(_QWORD *)((char *)v20 + 116) = v23;
*(_QWORD *)((char *)v20 + 124) = v4;
v5 = v26;
*(_QWORD *)((char *)v20 + 132) = v25;
*(_QWORD *)((char *)v20 + 140) = v5;
v6 = v28;
*(_QWORD *)((char *)v20 + 148) = v27;
*(_QWORD *)((char *)v20 + 156) = v6;
v7 = v30;
*(_QWORD *)((char *)v20 + 164) = v29;
*(_QWORD *)((char *)v20 + 172) = v7;
v8 = v32;
*(_QWORD *)((char *)v20 + 180) = v31;
*(_QWORD *)((char *)v20 + 188) = v8;
v9 = v34;
*(_QWORD *)((char *)v20 + 196) = v33;
*(_QWORD *)((char *)v20 + 204) = v9;
v10 = v36;
*(_QWORD *)((char *)v20 + 212) = v35;
*(_QWORD *)((char *)v20 + 220) = v10;
v11 = v38;
*(_QWORD *)((char *)v20 + 228) = v37;
*(_QWORD *)((char *)v20 + 236) = v11;
v12 = v40;
*(_QWORD *)((char *)v20 + 244) = v39;
*(_QWORD *)((char *)v20 + 252) = v12;
v13 = v42;
*(_QWORD *)((char *)v20 + 260) = v41;
*(_QWORD *)((char *)v20 + 268) = v13;
v14 = v44;
*(_QWORD *)((char *)v20 + 276) = v43;
*(_QWORD *)((char *)v20 + 284) = v14;
v15 = v46;
*(_QWORD *)((char *)v20 + 292) = v45;
*(_QWORD *)((char *)v20 + 300) = v15;
v16 = v48;
*(_QWORD *)((char *)v20 + 308) = v47;
*(_QWORD *)((char *)v20 + 316) = v16;
v17 = v50;
*(_QWORD *)((char *)v20 + 324) = v49;
*(_QWORD *)((char *)v20 + 332) = v17;
v18 = v52;
*(_QWORD *)((char *)v20 + 340) = v51;
*(_QWORD *)((char *)v20 + 348) = v18;
if ( ((unsigned int (*)(void))v20)() == 8225 )
puts("Congrats, this app successfully cracked!");
else
puts("Sorry, try again!");
return 0;
}

baby-vm (100 pts)
Description
Solution




baby-crack (100 pts)
Description
Solution

Last updated