Code Monkey home page Code Monkey logo

ice9-keygen's Introduction

Ice9 Keygen

This is a keygen for the Ice9 crackme by TripleTordo. You can find a link to the original crackme here. This keygen is stylized using the retro keygen aesthetic of the early 2000s. For instructions on how to use this tool, scroll down to the next section below. Later in this README is a breakdown of the serial generation algorithm that the Ice9 crackme uses.

Ice9-Keygen-UI

Installation and use

To use this keygen, simply navigate to the Release folder, then download Ice9-Keygen.exe. You can store it anywhere on your computer, and no installation is necessary -- just download and run. Once open, simply enter the name and click "Generate" to get a valid serial. You can also click "Copy" to add the serial number to your clipboard.

Track list

This keygen plays several chiptunes (i.e. "keygen music") as per the retro keygen aesthetic. It cylces through the playlist automatically. You can mute or unmute it by using the checkbox in the bottom left corner. This keygen uses the SharpMik library to play XM audio files. You can find a link to the archive of the XM files used for this keygen here. Below is a list of the tracks used:

  1. "unreeeal superhero 3" by rez+kenet
  2. "Valium candies" by Jakim
  3. "orion spaceforce23" by dualtrax
  4. "sleepy sunflower" by HyoChan

Anti-debugging

If you wish the reverse this crackme and step through the code, you will have to disable the IsDebuggerPresent() function that is called on offset 0x469 of the primary module. You can do this by changing the very next instruction to cmp eax, 0. Since the function that checks for a debugger returns a boolean value, this effectively disables the debugger check.

Serial generation algorithm

Before mutating the name into a serial, the program first checks to ensure the length of the name is between 4 and 10 characters long. Once a valid length is verified, the user-entered name is pushed onto the stack by the instruction on offset 0x4D5 of the primary module, then the serial generation algorithm begins. The serial generation algorithm can be broken down to the following steps:

  1. Iterate through each character of the name, ignoring the last character.
  2. If the character's ASCII value is in the range 0x41 to 0x5A (inclusive), add 0x2C to the ASCII value; otherwise, increment the modifier by the original ASCII value.
  3. The modifier undergoes 4 changes; first it is incremented by 0x29A, then it is multiplied by 0x3039, then it is decremented by 0x17, then lastly it is multiplied by 0x9.
  4. The algorithm repeatedly converts the remainder of the modified value divided by 0xA to its ASCII character representation, prepending it to the serial string, until the modified value becomes 0.
  5. Lastly, the algorithm iterates over the characters of the input name, starting from the fourth character, and appends each character to the previously generated serial key.

Sources

  • crackmes.one: The source of the original crackme. This site contains a rich repository of crackmes and other reverse engineering challenges. Highly recommended to improve your reverse engineering skills.

  • Guided Hacking - How to make a Key Generator KeyGen Tutorial: An in-depth guide on reversing the Ice9 crackme. I recommend checking it out for a visual step-by-step on how to reverse the serial generation algorithm.

  • Essential Keygen Music: A comprehensive collection of 100 chiptunes commonly used as keygen music. What's great about this archive is that the XM files appear to be direct rips from keygens, as their metadata is intact.

  • The XM file structure: A copy of the original documentation on the XM audio file format by Fredrik Huss. Was useful to get an understanding of how XM files are structured.

  • SharpMik: A pure C# audio library that supports XM audio files. This was essential to getting the keygen to play the chiptune XM audio files.

  • Costura: A C# library that lets you embed references as resources. This library was very useful for embedding the SharpMik assembly references into the keygen's PE file.

ice9-keygen's People

Contributors

julianozelrose avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.