ptxNinja è un plugin architetturale che estende le funzionalità di Binary Ninja per supportare file *.ptx contenenti funzioni o kernel scritti in PTX. Il linguaggio PTX è un formato di basso livello utilizzato da NVDIA per le proprie GPU basate su architetture CUDA. Questo plugin consente di avere un lifter che traduce istruzioni grezze in istruzioni nel formato di basso livello (LLIL) che Binary Ninja necessita per avviare le analisi.
Binary Ninja infatti consente di implementare un traduttore, chiamato lifter, per trasformare ogni istruzione “grezza” nella rappresentazione compatibile dal decompilatore. Come vediamo nell’immagine, l’implementazione di questo componente permette di decompilare PTX.

Ad esempio, analizzando un kernel CUDA che implementa una semplice moltiplicazione tra matrici, è possibile osservare in modo chiaro come un algoritmo ad alto livello venga trasformato in istruzioni PTX, e come queste possano essere ricondotte alla logica originale attraverso il processo di decompilazione. Questo consente non solo di comprendere meglio il mapping tra i diversi livelli di astrazione, ma anche di individuare ottimizzazioni, pattern ricorrenti e potenziali anomalie nel codice generato dal compilatore.

Il plugin sviluppato ha applicazioni in ambito di verifica semi-formale, analisi di malware che hanno come target l’architettura CUDA, e R&D su trasformazioni del compilatore. Il lavoro è stato presentato a RE//verse 2026 contribuendo allo stato dell’arte nell’analisi di codice PTX e GPU.
Inoltre, il progetto esplora le sfide legate alla rappresentazione di un’architettura fortemente parallela come CUDA all’interno di un framework di analisi pensato principalmente per codice sequenziale. Questo ha richiesto l’adattamento di alcune astrazioni del decompilatore e l’introduzione di soluzioni per modellare correttamente il comportamento dei thread e della memoria condivisa. I risultati ottenuti dimostrano come sia possibile estendere strumenti di reverse engineering tradizionali a contesti eterogenei, aprendo la strada a ulteriori sviluppi nell’analisi di codice GPU.