Good crackme. The password checking code looks very cumbersome because of a lot of embedded code from the std library, in particular the std::string implementation. Finding the password is very easy if you apply bp to the string decryption function, which is identical for both normal console messages and the password. Anti-debugging is not very difficult, I was very interested in the snippet that looks for int3 instructions in RWX memory regions, this seems very strange as usually the debugger does not change the protection to set a breakpoint, and even if it does it puts the memory protection back after a successful set breakpoint. |
==> |
CTF{Ghf1Dr4-4nD-5Tr4C3-f15-H3f1L} =) |
==> |
Great crackme on x64, you can patch address 0x14000107d to solve this problem |
==> |
nice key bro:)
fdooFPOkfpO[90PFJIKpofj9[O0PFJ[OPjkfopj[OPFJ[pfjOPJFOPjfopJFPOjfo |
==> |