The binary is from here: https://files.fm/u/qtqmhhdd
I've been attempting this a couple of days. Its an ELF-64 bit file and I've gdb and IDA to see how it works for a while. You can run the file by
./reverse1.bin TEST (outputs a fail message)
In gdb it runs a _Z5checkPc function and you can use "disas check". It uses the flag from address 0x601038 which is
But I don't see it where it actually get used in the code. From the check function it seems to does a bunch of operations (or, add,...) to your arg. I thought it would do a compare to see determine if it "fails" or "success" at 0x00000000004005b0 but that is not right strangely. Any insights on what to do?