Intelligent x86 Binary Signature Generator
Created by ZxPwd
A sophisticated desktop application for generating version-resilient byte signatures from x86 disassembly. Designed for reverse engineers, game modders, security researchers, and cheat/trainer developers who need signatures that survive compiler changes and code updates.
SignatureForge is a tool that helps you create byte pattern signatures that can locate specific code in executable files - even after the software has been updated.
When reverse engineering or modding software, you often need to find specific functions or code blocks. You might find a function at address 0x00AB1000 today, but after an update, that same function could be at 0x00CD2000. Hardcoded addresses break.
Instead of using addresses, you use byte patterns (signatures) that describe the actual machine code. SignatureForge analyzes your assembly code and creates smart patterns with wildcards (??) for bytes that are likely to change between versions.
Example:
Hardcoded: 0F 84 79 05 00 00 8B 8D 2C FE FF FF (breaks on update)
Smart: 0F 84 ?? ?? ?? ?? 8B 8D ?? ?? ?? ?? (survives updates)
00AB1000 | 56 | push esi | esi:"LdrpInitializeProcess"
00AB1001 | 8B70 08 | mov esi,dword ptr ds:[eax+8] | esi:"LdrpInitializeProcess"
00AB1004 | 8BD1 | mov edx,ecx |
00AB1006 | 57 | push edi | edi:"minkernel\ntdll\ldrinit.c"
00AB1007 | 8B78 14 | mov edi,dword ptr ds:[eax+14] | edi:"minkernel\ntdll\ldrinit.c"
00AB100A | C1EA 08 | shr edx,8 |
00AB100D | 88143E | mov byte ptr ds:[esi+edi],dl |
00AB1010 | 8B50 14 | mov edx,dword ptr ds:[eax+14] |
00AB1013 | 8B70 08 | mov esi,dword ptr ds:[eax+8] | esi:"LdrpInitializeProcess"
00AB1016 | 42 | inc edx |
00AB1017 | 8950 14 | mov dword ptr ds:[eax+14],edx |
00AB101A | 880C32 | mov byte ptr ds:[edx+esi],cl | edx+esi*1:"LdrpInitializeProcess"
00AB101D | 8B48 14 | mov ecx,dword ptr ds:[eax+14] |
00AB1020 | 41 | inc ecx |
00AB1021 | 5F | pop edi | edi:"minkernel\ntdll\ldrinit.c"
00AB1022 | 8948 14 | mov dword ptr ds:[eax+14],ecx |
00AB1025 | 5E | pop esi | esi:"LdrpInitializeProcess"
00AB1026 | C3 | ret |Simply paste the assembly listing into the editor panel.
Click Generate or press Ctrl+G. SignatureForge will:
- Parse the assembly automatically (supports x64dbg, Cheat Engine, and raw hex formats)
- Analyze each instruction for volatility
- Generate multiple signature variants with intelligent wildcarding
- Score each variant by uniqueness and stability
Copy the generated pattern and use it in your scanner, trainer, or mod. The signature will find the same code even after the target software is updated!
| Use Case | Description |
|---|---|
| Game Modding | Create trainers and mods that survive game updates |
| Cheat Development | Find game functions reliably across patches |
| Security Research | Track malware variants or vulnerable code patterns |
| Binary Analysis | Identify code across different builds and versions |
| Reverse Engineering | Document and relocate code patterns efficiently |
| Anti-Cheat Research | Study how signatures are used for detection |
| Mode | Button | Description |
|---|---|---|
| Click-to-Target | Generate |
Select a target from dropdown, click Generate |
| Target Mode | Start |
Generate from the first instruction in your paste |
| Smart Mode | Smart |
AI-powered analysis finds optimal anchor points automatically |
SignatureForge understands x86 semantics and applies smart wildcarding:
- Relative Jumps/Calls - Automatically wildcarded (offsets change when code relocates)
- Stack Offsets -
[ebp-XX],[esp+XX]frames vary between builds - Global Addresses - Affected by ASLR and relocation
- Struct Offsets -
[reg+XX]layouts may change - Immediate Values - Constants that may be tuned between versions
Each generation produces variants using different strategies:
- Minimal - Only jump/call offsets (maximum uniqueness)
- Conservative - User's default settings (balanced)
- Balanced - Between conservative and aggressive
- Aggressive - Everything wildcarded (maximum stability)
- Stack Focus - Only stack frame offsets
- Global Focus - Only global addresses
- Memory Heavy - All memory displacements
- Max Stability - Maximum version resilience
- Immediates Only - Only immediate values
The Smart Mode analyzes your entire input and:
- Scores each instruction for stability, uniqueness, and context quality
- Identifies stable regions ideal for signatures
- Recommends the best anchor points with explanations
- Generates signatures for top-scoring targets automatically
- 11 Context Variations - Different before/after context windows
- Anchor Shifting - Uses nearby stable instructions as anchors
- Similarity Deduplication - Keeps patterns >25% different
- Auto-Format Detection - x64dbg, Cheat Engine, or raw hex
- One-Click Copy - Pattern, mask, or IDA format
- Keyboard Shortcuts -
Ctrl+Ggenerate,Ctrl+Koptions, etc.
- Download from the Releases page
- Extract and run
SignatureForge.exe - No installation required
- Python 3.11+
- Node.js 18+
- npm
cd signature-forge/backend
pip install -r requirements.txt
python -m uvicorn app.main:app --host 0.0.0.0 --port 8000cd signature-forge/frontend
npm install
npm run devcd signature-forge/frontend
npm run electron:devcd signature-forge/frontend
npm run electron:build:win00B27AB0 | 0F84 79050000 | je apr24.2020.B2802F | Lawnmower_A
00B27AB6 | 8B8D 2CFEFFFF | mov ecx,[ebp-1D4]
Apr24.2020.exe+46751D - 0F84 85020000 - je Apr24.2020.exe+4677A8
Apr24.2020.exe+467523 - 8B91 88010000 - mov edx,[ecx+00000188]
0F 84 79 05 00 00 8B 8D 2C FE FF FF 81 C1 CC 06 00 00
- Paste disassembly into the editor (left panel)
- Select a target from the dropdown or use Smart Mode
- Click Generate (or press
Ctrl+G) - Review variants sorted by uniqueness score
- Copy your preferred signature pattern
+-----------------------------------------------------+
| FRONTEND (React + TypeScript) |
| +-----------+ +--------------+ +--------------+ |
| | Monaco | | Signature | | Smart | |
| | Editor | | Panel | | Analysis | |
| +-----------+ +--------------+ +--------------+ |
+--------------------------+--------------------------+
| Electron (Desktop Shell) |
| Custom Title Bar - Window Controls - IPC |
+--------------------------+--------------------------+
| REST API
+--------------------------v--------------------------+
| BACKEND (Python + FastAPI) |
| +-----------+ +--------------+ +--------------+ |
| |Disassembly| | Signature | | Smart | |
| | Parser | | Engine | | Analyzer | |
| | (Capstone)| | (9 Strats) | | (Scoring) | |
| +-----------+ +--------------+ +--------------+ |
+-----------------------------------------------------+
Frontend
- React 19 + TypeScript + Vite
- Monaco Editor (VS Code's editor)
- TailwindCSS (dark cyberpunk theme)
- Zustand (state management)
- Electron (desktop wrapper)
Backend
- Python 3.11 + FastAPI
- Capstone (x86 disassembly engine)
- Pydantic (data validation)
| Endpoint | Method | Description |
|---|---|---|
/api/parse |
POST | Parse disassembly input into structured instructions |
/api/generate |
POST | Generate signatures for specified targets |
/api/generate-targeted |
POST | Generate from first instruction (Target Mode) |
/api/smart-analyze |
POST | Analyze instructions and score anchor points |
/api/smart-generate |
POST | Smart analysis + automatic signature generation |
/api/health |
GET | Health check endpoint |
| Shortcut | Action |
|---|---|
Ctrl+G |
Generate signatures |
Ctrl+K |
Open options panel |
Ctrl+H |
Open history panel |
Ctrl+/ |
Show shortcuts help |
Escape |
Close panels |
signature-forge/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI app
│ │ ├── models/ # Pydantic models
│ │ │ ├── instruction.py # Instruction types
│ │ │ └── signature.py # Signature models
│ │ ├── routers/ # API endpoints
│ │ │ └── generate.py # Generation routes
│ │ └── services/
│ │ ├── parser.py # Input parsing
│ │ ├── analyzer.py # Byte analysis
│ │ ├── signature.py # Generation engine
│ │ └── smart_analyzer.py # Smart scoring
│ └── requirements.txt
│
├── frontend/
│ ├── electron/
│ │ ├── main.cjs # Electron main process
│ │ └── preload.cjs # Preload script
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── services/ # API client
│ │ ├── stores/ # Zustand state
│ │ └── types/ # TypeScript types
│ ├── package.json
│ └── vite.config.ts
│
└── README.md
- Higher = less likely to have false matches
- Based on ratio of concrete bytes vs wildcards
- Bonus for longer patterns
- Penalty for consecutive wildcards
- High - Many wildcards on volatile bytes, survives updates
- Medium - Balanced wildcarding
- Low - Few wildcards, may break between versions
| Byte Type | Volatility | Default Action | Reason |
|---|---|---|---|
| Relative JMP/CALL | High | Wildcard | Target addresses change |
Stack offsets [ebp-X] |
High | Wildcard | Local variable layout varies |
| Global addresses | High | Wildcard | ASLR/relocation affects |
Struct offsets [reg+X] |
Medium | Configurable | Struct layouts may change |
| Immediate values | Medium | Configurable | Constants may be tuned |
| Register operations | Low | Keep | Opcodes are stable |
| Simple opcodes | Low | Keep | Single-byte instructions |
This section explains how to build SignatureForge into a standalone desktop application that can be distributed to end users.
Before building, ensure you have the following installed:
| Requirement | Version | Download |
|---|---|---|
| Node.js | 18.0 or higher | nodejs.org |
| npm | 9.0 or higher | Included with Node.js |
| Python | 3.11 or higher | python.org |
| Git | Any recent version | git-scm.com |
Verify your installations:
node --version # Should show v18.x.x or higher
npm --version # Should show 9.x.x or higher
python --version # Should show Python 3.11.x or highergit clone https://github.com/ZxPwdz/Signature-Forge.git
cd Signature-ForgeThe backend uses Python with FastAPI and Capstone for x86 disassembly.
cd backend
pip install -r requirements.txtWhat gets installed:
fastapi- Modern Python web framework for the APIuvicorn- ASGI server to run FastAPIcapstone- Disassembly engine for x86/x64 instructionspydantic- Data validation and serialization
cd ../frontend
npm installWhat gets installed:
- React 19 + TypeScript
- Vite (build tool)
- Electron (desktop framework)
- electron-builder (packaging tool)
- Monaco Editor (code editor)
- TailwindCSS (styling)
- And other dependencies...
This may take a few minutes depending on your internet speed.
This compiles TypeScript and bundles the React application:
npm run buildWhat happens:
- TypeScript compiler checks for type errors
- Vite bundles and minifies the code
- Output is placed in
frontend/dist/
Now build the standalone desktop application:
For Windows:
npm run electron:build:winFor macOS:
npm run electron:build:macFor Linux:
npm run electron:build:linuxFor all platforms (if building on each OS):
npm run electron:buildAfter a successful build, you'll find the output in frontend/release/:
frontend/release/
├── win-unpacked/ # Windows portable version
│ ├── SignatureForge.exe # Main executable
│ ├── resources/
│ │ ├── app.asar # Bundled frontend code
│ │ └── backend/ # Python backend source
│ │ ├── app/
│ │ │ ├── main.py
│ │ │ ├── models/
│ │ │ ├── routers/
│ │ │ └── services/
│ │ └── requirements.txt
│ ├── *.dll # Chromium/Electron DLLs
│ └── locales/ # Language files
│
├── SignatureForge Setup X.X.X.exe # Windows installer (NSIS)
└── SignatureForge-X.X.X-portable.exe # Windows portable single-file
SignatureForge is a hybrid Electron + Python application. Here's how it works when distributed:
┌─────────────────────────────────────────────────────────────┐
│ SignatureForge.exe │
│ (Electron Shell) │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. On startup, Electron checks if Python is available │
│ │
│ 2. Spawns Python backend process: │
│ python -m uvicorn app.main:app --port 8000 │
│ │
│ 3. Waits for backend to be ready (health check) │
│ │
│ 4. Loads the React frontend in the Electron window │
│ │
│ 5. Frontend communicates with backend via REST API │
│ (localhost:8000) │
│ │
└─────────────────────────────────────────────────────────────┘
Important: End users need Python 3.11+ installed on their system. The application will:
- Detect Python installation
- Auto-install required pip packages on first run
- Start the backend server automatically
Distribute the entire win-unpacked/ folder:
SignatureForge-Portable/
├── SignatureForge.exe
├── resources/
├── *.dll
└── locales/
Pros: No installation required, just run the exe Cons: Larger folder size (~200MB)
Use the generated SignatureForge Setup X.X.X.exe:
Pros: Professional installer experience, creates Start Menu shortcuts Cons: Requires installation
Use SignatureForge-X.X.X-portable.exe:
Pros: Single file distribution Cons: Slower startup (extracts on each run)
Users who download your built application need:
| Requirement | Notes |
|---|---|
| Windows 10/11 | 64-bit recommended |
| Python 3.11+ | Must be in PATH |
| pip | Included with Python |
| Internet | Only for first run (pip install) |
First Run Experience:
- User launches
SignatureForge.exe - App detects Python and installs dependencies (~30 seconds)
- Backend starts, frontend loads
- Ready to use!
# Clear cache and reinstall
rm -rf node_modules
rm package-lock.json
npm install
npm run build# Ensure you have the latest electron-builder
npm install electron-builder@latest --save-dev
npm run electron:build:win# Upgrade pip first
python -m pip install --upgrade pip
pip install -r requirements.txt# Check what's using port 8000
netstat -ano | findstr :8000
# Kill the process or change the port in electron/main.cjsThe build includes Chromium (~150MB). This is normal for Electron apps. To reduce size:
- Use
electron-builder's ASAR compression (enabled by default) - Consider using
electron-builder's--dirflag for testing
| Aspect | Development | Production Build |
|---|---|---|
| Frontend | Vite dev server (hot reload) | Bundled static files |
| Backend | Manual start required | Auto-started by Electron |
| Port | 5173 (Vite) + 8000 (API) | 8000 (API only) |
| Debug | DevTools available | DevTools hidden |
| Size | Source files | Minified + compressed |
All build scripts are defined in frontend/package.json:
| Script | Command | Description |
|---|---|---|
dev |
vite |
Start Vite dev server |
build |
tsc -b && vite build |
TypeScript check + bundle |
electron:dev |
concurrently ... |
Dev mode with Electron |
electron:build |
electron-builder |
Build for current OS |
electron:build:win |
electron-builder --win |
Build Windows version |
electron:build:mac |
electron-builder --mac |
Build macOS version |
electron:build:linux |
electron-builder --linux |
Build Linux version |
After building, create a release on GitHub:
- Go to your repository → Releases → "Create a new release"
- Tag version:
v1.0.0 - Upload these files:
SignatureForge Setup X.X.X.exe(Windows installer)SignatureForge-X.X.X-portable.exe(Windows portable)SignatureForge-Portable.zip(zipped win-unpacked folder)
- Add release notes describing features
Author: ZxPwd
Built with:
- Capstone - Disassembly framework
- Monaco Editor - Code editor
- FastAPI - Python API framework
- Electron - Desktop framework
- React - UI framework
- TailwindCSS - Styling
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
SignatureForge - Making binary signatures that actually work.
