Very nice, 4aca7f6c and pinnn! I've read your solution, 4aca7f6c, it's just great! Can't wait to read yours as well, pinnn. |
==> |
Did anyone give this a try yet? If so, I'd love to hear about your progress. And don't hesitate to ask for hints if you're stuck. You can reach out to me via email (ascii 74746c6861636b6572406f75746c6f6f6b2e636f6d) or just leave a comment here. |
==> |
You can reach me at this email, Zibri:
74746c6861636b6572406f75746c6f6f6b2e636f6d
(hex ascii to keep the spammers out) |
==> |
Very, very well done, 4aca7f6c and s4r! That's two very interesting methods to solve this crackme - I guess the only thing missing now is someone writing a custom disassembler, like 4aca7f6c did for hell86! I really wouldn't have expected someone to "compile" it all into x86 code and then analyze it statically, that's just crazy.
Expect another crackme from me in the future, but don't worry, it'll take me a few months, I guess! Let's see what kind of crazy stuff I can come up with... :P |
==> |
@4aca7f6c Thanks a lot! I'm glad you enjoyed it! Now I'm curious about how you solved it... What was the hardest thing for you to figure out? (By the way, you're incredibly quick!) |
==> |
@K2000 I just noticed that there's a memory corruption bug in the crackme... You can start cracking it on Windows, but it'll crash after the first verification step. I've sent a fixed version to s4r so he can update it here on the site.
(In case you're wondering: I did a malloc(strlen(str)) in my custom strdup routine so the code writes out-of-bounds and corrupts the heap, which is pretty embarrassing.) |
==> |
@K2000 The crackme runs fine under the "Windows Subsystem for Linux" (also known as "Bash on Ubuntu on Windows"), you can use that to crack it on Windows instead of Linux.
It's not really feasible for me to make a native Windows version, unfortunately, because the thing heavily depends on interoperability between C and assembly code, and thus on the Unix/Linux calling convention. Changing that would require a rewrite of large portions of its code... And this thing is more than 3000 lines long. |
==> |
Amazing write-up, 4aca7f6c! Very nice! |
==> |
Awesome, thanks a lot! :) Another possible way to solve this would've been to write a disassembler for the thing, I guess. By the way, how shoud I best upload its source, now that I forgot to include it in the original upload? |
==> |