Creating KEYGEN for Crackme Code |
Creating Keygen for Crackme Code
Author: Harsimran Walia 
See Also

In this article, we will learn how to create Keygen for sample crackme presented in our Reversing Session.

This article is the part of our free "Reverse Engineering & Malware Analysis Course".

You can visit our training page here and all the presentations of previous sessions here


In our last Training session "Part 4 - Practical Reversing (I)" we have seen how to reverse sample crackme by both static & dynamic reversing.

In this article, we will create the Keygen for the same crackme code.

Crackme Algorithm
The crackme takes two inputs Username and Password, then generates new password based on the username.

Here is the Password generation algorithm.

len = Username_length
For i = len-1 to 0 and j = 0 len-1
NewPass[j] = Username[i] + i
Next it compares the input password with generated password to verify if user has entered Valid password.
Generating KeyGen Code
Now the keygen should be able to generate the new Password based on the userName input from the user which should crack the crackme.

The code for Keygen is as listed below contains the algorithm that is used by the crackme and outputs the username/password couple to successfully defeat this Crackme.


int main()
    char a[10],c[10],d;
    int i,j,k=0;
    printf("#Keygen by b44nz0r\n\n");
    while (k <5 || k >=10)
          if (k !=0)
             printf("\nThe username length should be 5 to 10 alphabets\n");
         printf("enter username: ");
         k = strlen(a);
    i = k-1;
    j = 0;
    while (i >= 0)
          c[j] = a[i]+i;
    c[j] = 0;
    printf("\nThe password is %s\n",c);
    printf("\nHit Enter to Exit\n");
This article is provided STRICTLY for educational purposes only. This keygen is for Sample code written to teach the basic reversing.

It is part of our ongoing FREE Reversing & Malware Analysis Course.

  1. Reversing & Malware Analysis Training
  2. Reference Guide - Reversing/Malware Analysis Training
  3. Training Session Part 4 - Practive Reversing (I)
See Also