Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
pe-signgen — Generazione universale di firme per qualsiasi funzione di sistema da tutte le build di Windows utilizzando Winbindex | Kitploit
Strumenti/GitHubGitHub/forentfraps/pe-signgen
Analisi StaticaAnalisi delle VulnerabilitàReverse EngineeringInformatica ForenseAnalisi MalwareAnalisi di Binari
GitHubforentfraps/pe-signgen

pe-signgen

Generazione universale di firme per qualsiasi funzione di sistema da tutte le build di Windows utilizzando Winbindex

Vedi Repository
20489 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Sito web
Condividi

pe-signgen

Firme binarie e offset RVA cross-version per funzioni Windows PE


Panoramica

pe-signgen è uno strumento per reverse engineer e ricercatori di sicurezza che genera automaticamente:

  • Firme binarie (pattern di byte con wildcard) per funzioni non esportate ed esportate
  • Offset RVA e di file per localizzare le funzioni direttamente nei binari
  • Firme cross-build che funzionano su molte versioni di Windows
  • Molteplici formati di output ottimizzati per diversi casi d'uso
  • Supporto per architetture x64, ARM64 e WoW64

L'idea centrale è fornire un modo sistematico e robusto per accedere a funzioni non esportate nelle build di Windows 10/11. Si basa su:

  • Winbindex per i metadati delle build di Windows
  • I server di simboli pubblici Microsoft per i PDB
  • Cache locale per flussi di lavoro riproducibili e utilizzabili offline

⚠️ Supporto versioni Windows pe-signgen supporta solo Windows 10 e Windows 11. Questa è una scelta progettuale deliberata: Winbindex non fornisce dati completi per le versioni precedenti.


Casi d'uso

  • Internals Windows non esportati Genera firme per funzioni come LdrpInitializeTls, RtlpInsertInvertedFunctionTableEntry, ecc.

  • Game hacking / ricerca anti-cheat Genera firme stabili che sopravvivono agli aggiornamenti dei giochi

  • Ricerca sulla sicurezza Individua routine critiche per la sicurezza tra le build di Windows

  • Automazione Generazione scriptabile di firme e offset per interi set di API interne


Formati di output

pe-signgen fornisce tre distinti formati di output per diversi casi d'uso:

1. Formato JSON

Dati strutturati per automazione, scripting e integrazione con altri strumenti.```bash pe-signgen --signature ntdll!NtCreateFile -o ntcreatefile.json --output-format json

**Struttura dell'output:**```json
{
  "dll_name": "ntdll",
  "function_name": "NtCreateFile",
  "architecture": "x64",
  "generated": "2024-12-11T15:30:00.123456",
  "total_builds": 1247,
  "unique_signatures": 3,
  "signature_groups": [
    {
      "matched_symbol": "NtCreateFile",
      "signature": "4C 8B DC 49 89 5B 08 49 89 6B 10 49 89 73 18 ...",
      "length": 48,
      "build_count": 845,
      "versions": [
        { "major": 10240, "minor": 16384, "build": "10240.16384" },
        { "major": 10586, "minor": 0, "build": "10586.0" }
      ]
    }
  ]
}

Notes:

  • major e minor sono derivati dalla stringa di build dividendo al primo .. Esempio: "10240.16384" → major = 10240, minor = 16384.
  • build è la chiave stringa di build originale utilizzata internamente.

2. Formato Binario (WSIG/WOFF)

Formati binari compatti, pronti all'esecuzione, ottimizzati per sistemi embedded e scansione a basso overhead.

Questi corrispondono al layout su disco implementato in write_wsig() e write_woff().


Formato WSIG (Firma Windows)

Magic: WSO\0 (0x57 0x53 0x4F 0x00) Versione corrente: 1 Scopo: Memorizzare firme binarie con maschere wildcard e versioni di build Windows associate

Struttura del file (concettuale)```

┌─────────────────────────────────────┐ │ Header (36 bytes) │ ├─────────────────────────────────────┤ │ DLL Name (variable) │ ├─────────────────────────────────────┤ │ Function Name (variable) │ ├─────────────────────────────────────┤ │ Signature / Mask / Build blobs │ ← Arbitrary order, see notes ├─────────────────────────────────────┤ ← Aligned to 4 bytes │ Groups Table (24 × N bytes) │ └─────────────────────────────────────┘

**Note importanti sul layout (corrisponde a `write_wsig`)**

* Dopo l'header, i nomi della DLL e della funzione sono scritti come byte UTF‑8.
* Per ogni gruppo di firme, vengono scritti i byte del pattern e i byte della maschera, seguiti dall'array di build per quel gruppo.
* Queste regioni per gruppo **non** sono raggruppate globalmente per tipo: pattern, maschere e array di build possono essere intervallati.
* Il builder si allinea a **4 byte** prima di ogni array di build e prima della tabella dei gruppi. Ciò può introdurre padding.
* I consumatori devono **sempre** seguire gli offset nell'header e nelle voci dei gruppi; **non** fare affidamento sul diagramma concettuale per la contiguità fisica.

##### Layout dell'header (36 byte)```c
// Packed as: "<4sIIIIIIII" (little-endian)

typedef struct {
    char     magic[4];   // "WSO\0" (WSIG_MAGIC)
    uint32_t version;    // FORMAT_VERSION (currently 1)
    uint32_t arch;       // Architecture code (1=x64, 2=ARM64, 3=WoW64)
    uint32_t dll_off;    // Offset to DLL name string
    uint32_t dll_len;    // Length of DLL name in bytes
    uint32_t func_off;   // Offset to function name string
    uint32_t func_len;   // Length of function name in bytes
    uint32_t group_count;// Number of signature groups
    uint32_t groups_off; // Offset to groups table
} wsig_header_t; // 36 bytes
Voce di gruppo (24 byte)

Ogni gruppo di firme rappresenta un pattern unico che si applica a una o più build di Windows.```c // Packed as: "<IIIIII" (little-endian)

typedef struct { uint32_t sig_off; // Offset to signature pattern bytes uint32_t sig_len; // Length of signature pattern (in bytes) uint32_t mask_off; // Offset to wildcard mask bytes uint32_t mask_len; // Length of wildcard mask (≈ ceil(sig_len/8)) uint32_t builds_off; // Offset to build version array uint32_t build_cnt; // Number of builds using this signature } wsig_group_t; // 24 bytes

##### Voce della versione della build (8 byte)

Ogni voce di build identifica una versione specifica di Windows che utilizza questa firma.```c
typedef struct {
    uint32_t major; // e.g. 19041
    uint32_t minor; // e.g. 1234
} wsig_build_t; // 8 bytes

major e minor derivano dalla suddivisione della stringa di build ("A.B" → A, B). La stringa di build originale non è memorizzata nel formato binario; se ti serve, conservala esternamente (è presente nell'output JSON).

Formato della maschera jolly

La maschera è una maschera di bit in cui ogni bit corrisponde a un byte nel pattern della firma:

  • Bit = 1: il byte deve corrispondere esattamente (byte fisso)
  • Bit = 0: il byte è jolly (ignora questo byte durante la corrispondenza)

Esempio:``` Signature: 4C 8B DC 49 89 ?? 08 49 Mask bits: 1 1 1 1 1 0 1 1 (MSB first within each byte) Mask byte: 0xBF (binary: 10111111)

I byte della maschera sono memorizzati e interpretati in **ordine dei bit little-endian** all'interno di ogni byte (esattamente come usato negli helper C e in `parse_signature`):```c
uint8_t bit = (mask_bytes[byte_index >> 3] >> (byte_index & 7)) & 1u;
String Storage
  • I nomi di DLL e funzioni sono memorizzati come UTF‑8, senza terminatore null.
  • Usare *_len per determinare la lunghezza; non leggere oltre.
  • Non ci sono requisiti di allineamento per le stringhe stesse.
  • Le regioni di dati aggiuntive (gli array di build e la tabella dei gruppi) sono allineate a confini di 4 byte; trattare qualsiasi padding come opaco.

Formato WOFF (Windows Offset)

Magic: WOF\0 (0x57 0x4F 0x46 0x00) Versione corrente: 1 Scopo: memorizzare RVA diretti e offset di file per le funzioni in tutte le build di Windows

Scarica lo strumento