This tool extracts and uses GM's internal
sa015bcrseed-to-key algorithm from thegmkeylib.dllto generate valid security keys for unlocking ** E88 ECUs (Engine Control Modules). It supports decryption of seeds and returns matching keys for authentication over OBD2. Reverse engineeredkeygen.exeto extract E88 ECU key generation system.
- Algorithm from binary blob (
sa015bcr) - Fully working DLL call interface
- Accepts 4-byte hexadecimal seed
- Returns valid unlock key for
E88modules - Pure native tooling (Mono + C#)
e88seed2keyc_encrypted/
├── ai.md # - Explanation for model.
│
├── bin/ # - Binary directory containing compiled or external resources.
│ └── gmkeylib.dll # — Native DLL likely containing the seed-key algorithm implementations.
├── gmkeylib.dll # - Root-level duplicate of the same DLL, maybe for convenience.
│
├── gmkeylib.lic # - License file required by gmkeylib.dll for functionality.
│
├── gmseedkeyalgs.md # - Markdown file listing known seed-key algorithms and observations.
│
├── LicGen.cs # - C# file for generating .lic license files compatible with the DLL.
│
├── src/ # - C# source code for interacting with the native DLL and performing seed-key calculations:
│ ├── Crypto.cs # — Contains cryptographic routines, possibly reverse-engineered.
│ ├── gmkey.cs # — Main logic for seed-key conversion and algorithm selection.
│ ├── Helpers.cs # — Utility functions (e.g., hex conversions, validation).
│ └── LibLoader.cs # — Dynamically loads gmkeylib.dll and invokes its methods.
└── TestHarness.cs # - Test driver to demonstrate usage, pass seeds, and receive computed keys.sudo pacman -S mono # or sudo apt install mono-complete- Compile the Executable
cd FINISHED/srcmcs -out:../bin/LicGen.exe *.cs- Run It With a Seed
cd ../binmono LicGen.exe 0x12345678Example Output
Input Seed: 12345678 → Generated Key: ABCD1234
This tool specifically supports algorithm 93 (internally named sa015bcr), which is known to work for many ECUs including E88.