ezman's easy keyg3nme



12:55 PM 10/13/2019


Unix/linux etc.


easy, you just need to figure out the logic behind key validation. this should be fairly easy even with an ugly debugger. i'm new here, so the difficulty ranking could be a little off.

mrT4ntr4 on 9:41 AM 10/14/2019: Too easy! (input % 0x4c7 == 0)

rootabeta on 2:06 AM 10/17/2019: To the author - This was a pretty fun crackme, and I apologize in advance for the comment I'm about to leave for the previous commenter. None of my criticism is for you. Now on the other hand, @mrT4ntr4 - What is wrong with you? What convinced you it was a good idea to post the answer to a crackme right in full view of anyone planning to download it? You wanna post a writeup somewhere else, that's fine. You even wanna link to that writeup? Go ahead. But there is no justification for waving the flag in the face of anyone else. That completely defeats the point of a crackme - to learn. You rob the player of that opportunity, and that is something I abhor.

juansacco on 12:27 PM 10/17/2019: Enter your key: 1223 Good job mate, now go keygen me. { return a1 % 1223 == 0; } There is nothing to keygen here. key is hardcoded

juansacco on 12:36 PM 10/17/2019: It's possible to write a keygen :D

mrT4ntr4 on 1:15 PM 10/18/2019: Hey @rootabeta, What I wanted to say was that it doesn't really need a keygen, also you'll find many crackmes which would lead you to the solution right away, so you just have to look for spoilers (don't read my comment). PS @juansacoo thanks for posting another one :XD

qu3st1on on 1:08 PM 11/06/2019: good for beginners :D everythind with mod 1223 = 0 i put 2446

evilyach on 9:11 AM 11/08/2019: I'd say it's pretty good exercise to get to know your disassembler, so obviously it is pretty easy, but if you are at the very beginning it's fine. If you want harder challenges, there are plenty on the Internet, guys!

BitFriends on 4:11 PM 11/11/2019: This is not very easy. My decompiler displays the key_validate funtion like this: int validate_key(int arg0) { if (arg0 == ((SAR(HIDWORD(arg0 * 0x1acb0aad), 0x7)) - (SAR(arg0, 0x1f))) * "_registerTMCloneTable") { rax = 0x1; } else { rax = 0x0; } return rax; } Please help me.

cipherhater on 11:02 AM 11/14/2019: Hi, $ ./keyg3nme Enter your key: 42424234 Good job mate, now go keygen me. $ ./keyg3nme Enter your key: tertrret Good job mate, now go keygen me. --- 1213: 29 c1 sub %eax,%ecx 1215: 89 c8 mov %ecx,%eax 1217: 85 c0 test %eax,%eax - 1219: 75 07 jne 1222 (0x1222) + 1219: 90 nop + 121a: 90 nop 121b: b8 01 00 00 00 mov $0x1,%eax 1220: eb 05 jmp 1227 (0x1227) 1222: b8 00 00 00 00 mov $0x0,%eax --- ))) Best regards

Asm0d3us on 12:30 PM 11/17/2019: check - (param_1 % 0x4c7 == 0); so simply 0 as key will work --------------------------------- Enter your key: 0 Good job mate, now go keygen me. ---------------------------------

l@m@l on 5:18 AM 11/26/2019: How would you go about solving this solely using IDA/a debugging tool? I figured out the function that was interesting and the result I needed, but manually reversing the assembly "equation" seems like an inefficient way... Any help/suggestions would be greatly appreciated (I solved by using an alternate program)!

m0xz on 7:57 AM 12/04/2019: having a lot of fun with this one. Also, to everyone else, please don't post solutions in the comment section :/ Thanks ezman, welcome to the community!

BeachyHead on 6:07 PM 12/13/2019: thanks a lot. You were my first. :-P

dav1nc1 on 3:57 AM 12/14/2019: it judge whether input % 0x4c7 ?= 0

rockstardevil on 6:17 PM 12/15/2019: --- writeup dont forget to subs

hkr0x0a on 10:50 AM 12/21/2019: This was a fun challenge. I am new to this community and I absolutely loved it! Thanks @ezman!

phant0master on 7:33 PM 12/25/2019: Simple keygen: #include int main (int argc, char** argv) { int fixed = 0x4c7; for(int i = 0; i

phant0master on 7:34 PM 12/25/2019: for(int i = 0; i

phant0master on 7:35 PM 12/25/2019: for(int i = 0; i

catzrc00l on 12:45 AM 12/30/2019: #include int main() { for(int param = -2147483648; param != 2147483647; param++) { if (param == ((int)(((long)param * (long)0x1acb0aad) 39) - (param 0x1f)) * 0x4c7) { std::cout

NightChips on 8:42 PM 01/03/2020: Nice

Maksim on 11:17 AM 01/05/2020: keygen: 0x1222 mov eax, 0 - mov eax, 1 seems worked, it was interesting, thanks