Crackme: FentCat's Assembler Crackme

Download here: https://crackmes.one/crackme/68fce1922d267f28f69b783a

MD5: d984f4a4bbb82a815f0c16f55335db9a
SHA1: 01b8463234e66e91c96052414eaff8dd7053cd99
SHA256: 104f850cf4e7d3f6bc09d286fcbe651795c632a79ebbc2242ea8be08cd8b8e41

This is listed as an x86 Assembler executable with a difficulty rating of 3.0. The author is FentCat and the executable is written for Windows.

The authors description: 

Hello, this is my first ever upload. Please give me feedback. Was made in Assembler using nasm. have a great day

Loading this executable in Detect it Easy, it appears to be extremely complex but after loading it into Ghidra, you realize that you have a plethora of information available to you. Below is the output and the only variable I named was the return result of validate_password and the g_ variables.

 
At first I thought maybe the author was trying to fool me into not checking those fake function calls but they are legit fake calls. As you can see below, the call just sets a local variable to some arbitrary number before returning.

Perhaps if the fake_cheksum function call was made first, it may have given me some pause as it actually looks like it does something. But I decided to ignore it and see if I can just go straight into the validate_password function.

 
I did have to rename some variables here but even without my labels, it isn't too hard to figure out what is going on. The entered password needs to match the global encoded_data bytes. By the way, the variable name "encoded_data" came conveniently labeled... Strip your variable names!

 
Taking a look at the data stored in encoded_data, we get this. (I did have to tell Ghidra to display the bytes as chars but you could just use the hex values and an ascii chart to deduce the same thing.) In our main function, there is a check to see that our entered password is either 10 or 9 characters long to be considered a valid password. The number of bytes stored in encoded_data is 8. The discrepancy comes from the addition of the null terminator and the newline character.

 

Using the password "@CBEDGFI" is the correct password. 

 

Comments

Popular posts from this blog

Crackme: antilagvip's medium crackme

Crackme: git's simple crackme medium-hard

Crackme: atherusti's First C program