#include // This is the rewrite of 'embedded.bin' from assembly from scratch // while ensuring the integrity of program flows and so on int main() { int i; char fakeflag[0x18] = "Fake Flag: THCTT24{fake}"; // 23 bytes char for (i = 0; i <= 0x17; i++) { // starts at 0; 23 chars at 0x17 putchar(fakeflag[i]); } putchar(0xa); // \n } int s(int arg1) { putchar(arg1); return putchar(0x65); // e } int q(int arg1) { putchar(arg1); putchar(0x32); // 2 return s(0x37); // 7 } int r(int arg1) { putchar(arg1); q(0x30); // 0 return putchar(0x66); // f } int t(int arg1) { putchar(arg1); putchar(0x61); // a return r(0x34); // 4 } int o(int arg1) { putchar(arg1); putchar(0x33); // 3 return t(0x33); // 3 } int l(int arg1) { o(0x35); // 5 putchar(arg1); return putchar(0x36); // 6 } int i(int arg1) { putchar(arg1); putchar(0x39); // 9 return l(0x64); // d } int m(int arg1) { putchar(arg1); putchar(0x31); // 1 return i(0x30); // 0 } int d(int arg1) { putchar(arg1); m(0x63); // c return putchar(0x33); // 3 } int j(int arg1) { putchar(arg1); putchar(0x30); // 0 return d(0x62); // b } int c(int arg1) { putchar(arg1); putchar(0x61); // a return j(0x65); // e } int f(int arg1) { c(0x37); // 7 putchar(arg1); return putchar(0x31); // 1 } int g(int arg1) { putchar(arg1); f(0x34); // 4 return putchar(0x64); // d } int a(int arg1) { putchar(arg1); putchar(0x30); // 0 return g(0x66); // f } int e(int arg1) { putchar(arg1); putchar(0x61); // a return a(0x38); } int h(int arg1) { putchar(arg1); putchar(0x34); // 4 e(0x65); // e return putchar(0x7d); // } } int b(int arg1) { putchar(arg1); putchar(0x34); // 4 putchar(0x7b); // { return h(0x30); // 0 } int p(int arg1) { putchar(arg1); putchar(0x54); // T return b(0x32); // 2 } int k(int arg1) { putchar(arg1); putchar(0x43); // C return p(0x54); // T } int n(int arg1) { putchar(arg1); return k(0x48); // H }