Domanda

Questa è una specie di domanda in due parti. Ma entrambi si riferiscono alla stessa cosa.

Voglio lavorare con il codice IL di un'app per applicare le patch. Mi chiedo quale sarebbe l'approccio giusto. Ovviamente ho potuto decompilarlo e leggere e modificare il file il codice quindi ricompilare. ma c'è un modo per leggerlo come codice msil direttamente nel file. e magari modificarlo in tempo reale.

Stavo cercando di modificare il codice decompilato di un eseguibile. ma ogni volta che lo ricompilavo avrei avuto un problema con l'esecuzione. Come se non riuscisse più a trovare il suo punto di ingresso. Come lo calcolo? Immagino di dover conoscere la lunghezza dei comandi e dei loro parametri, o di rendere il punto di ingresso un'etichetta o qualcosa del genere. Sarei bello se ci fosse un modello di Visual Studio per qualcosa del genere.

È stato utile?

Soluzione

Come qualcuno che ha già letto ECMA-335 spec più volte e hanno implementato un caricatore di immagini CLI in due lingue diverse (con un'analisi IL completa in una), direi che questo sarebbe ancora un compito impegnativo per me. Lo dico perché sembra che sia 1) che tu non l'abbia fatto, sia 2) che tu stia cercando una risposta facile. Le specifiche dovrebbero sicuramente essere il tuo punto di partenza.

La procedura minima sarebbe:

  • Carica l'immagine PE (exe o dll)
  • Analizza il codice byte di tutti i metodi e risolvi i simboli
  • Applica trasformazioni di codice (il minimo ovviamente sarebbe una singola trasformazione come rinominare metodi privati)
  • Salva il risultato come nuova immagine PE

Modifica: questo non ti impedirà di dover conoscere la struttura dettagliata degli assembly .NET, ma potrebbe farti risparmiare un po 'di tempo nell'attuazione effettiva e aiutare a mantenere la logica del tuo offuscatore ben separata dal caricatore.

Altri suggerimenti

Per leggere MSIL, c'è sicuramente, in questo filetto :

ildasm.exe - Intermedio Disassemblatore di lingua. Puoi visualizzare il tuo codice compilato a livello di MSIL con questo strumento.

Questo si trova nel Microsoft SDK.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top