In the main function:
sub_401639 is called with v4 as target, v5 as input ("331") and a3 = 22.
This means it generates a key derived from "331" by applying an offset of 22.
For "331":
'3' → (3 + 22) % 10 = 5
'3' → (3 + 22) % 10 = 5
'1' → (1 + 22) % 10 = 3
Result/Correct Key: "553" |
==> |
My keygen: https://pastebin.com/G2w3psbT |
==> |
Here my solotion (it took me more work than expected)
https://pastebin.com/LmgNGD3S |
==> |
here my keygen for this crackme: https://pastebin.com/YRPLfEKq
|
==> |
Password its in this adress on x64 dbg
00007FF7B99112E1| 49:0F47D6| cmova rdx,r14 | rdx:"crackmeYG" |
==> |
Password: secret123 to patch
the program change "JNE" to "JE" |
==> |
The password is: 1304ckletlqgjnbo
put a breakpoint here on x64dbg:
0000000000409C01 | 48:8B08 | mov rcx,qword ptr ds:[rax] | rcx:"1304ckletlqgjnbo", [rax]:"1304ckletlqgjnbo" |
==> |
The program basically does this:
Username: 4 characters of any type.
Password: Sum of the ASCII values of the 4 characters of the username, multiplied by 4.
Here my c++ keygen
https://pastebin.com/Mh7fiJAr |
==> |
The comparison at 00007FF7EAA012768138 32313430cmp dword ptr ds:[rax],30343132 checks if the first four characters match the hexadecimal value 30343132, which translates to the characters "2140" in ASCII.
The comparison at 00007FF7EAA0127E8078 04 31cmp byte ptr ds:[rax+4],31 checks if the fifth character is '1'.
Therefore, the correct password is "21401 |
==> |
00401347- cmp eax,dword ptr ss:[ebp-4]
Nice crackme the password is: 19082004
|
==> |
The password is "yourpass"
I Used x64 dbg |
==> |
First Key- 5ZY4HSUIYKHTPFPN7Q30 |
==> |
Nice crackme password: thatflagissus3 |
==> |