Nice. I'll upload a harder version soon 😂 |
==> |
I uploaded a fixed version. The offsets from the tutorial and obfuscation are going to be different tho |
==> |
Uploaded on pastebin because I yapped too much: https://pastebin.com/ySvPDDy5 |
==> |
xor rax, 29 |
==> |
Hey kiokko89
I dont really recommend doing this crackme as a beginner but here is a complete tutorial how you can solve it.
Since there is no anti debug you can attach a debugger and press suspend when prompted to input a password. This will suspend the program after entering a password (it wont suspend before you pressed enter in the console). Then you can step out until you find the location where the input is checked and try to find the password there. Just know that the check is not a plain if password == "abc". Each letter is checked separate and not in order. But before that it checks if the input length matches the password length. But that check is also not a plain comparsion.
You can also use this method to try to find where exactly the "Wrong Password!" log is happening then finding at what condition it logs by looking at the call stack and checking what callers did to end up at the log
Locations (Offsets):
! To go to one of these locations in IDA press "Jump" at the top then press "Jump to file offset..." then paste the number into the input box and press OK
! Read the notice at the bottom of this tutorial to know what FAULTY_CHECK is about
Input Length Check: 0x54a98
OBFUSCATED_SWITCH_CASE 14: 0x54330
FAULTY_CHECK: 0x54b55
STEPS TO SOLVE:
! Just know that addresses and labels may not show the same as in this tutorial
To find the first part of the validation you just do the method above until you find the input length check.
The first part of the validation is the input length check. It xors the input length with 29 then multiplies with 2 and checks if the result is 40.
xor rax, 29 |
==> |