Domanda

L'unico modo in cui so come fare attualmente è l'apertura di EXE in Visual Studio. Mi piacerebbe poterlo fare interamente in C # se possibile. Altre opzioni includono:

  • P / Richiamo LoadResource () dall'API Win32
  • Utilizzando uno strumento esistente (qualcuno lo conosce?)
  • Altre idee?

Grazie!

È stato utile?

Soluzione

P / Invoca LoadResource sarà la scommessa più sicura.

Altrimenti dovrai scrivere il tuo P / E ad es. Esempio di processore PE . Il processore non è la fine del mondo, ma come puoi vedere molto più coinvolto di un P / Invoke.

Quasi dimenticato, per quanto riguarda gli strumenti, la maggior parte dei browser P / E lo farà per te. Per esempio. P / E Explorer, che è disponibile ma non in fase di sviluppo. Ho anche usato IDA Pro per cose come questa. Un veloce plugin IDA lo farebbe facilmente.

Altri suggerimenti

Presumo che tu stia cercando di leggere una risorsa di tipo RCDATA da un eseguibile (tieni presente che la sezione "eseguibile" indica una cosa diversa: si riferisce alle parti .text, .data, .rdata, ecc. del File PE). Se vuoi leggerlo dall'assembly corrente, ecco un tutorial che mostra come: Accesso alle risorse integrate tramite GetManifestResourceStream , utilizzando GetManifestResourceNames e GetManifestResourceStream metodi.

Se non si desidera leggerlo dall'eseguibile corrente, è possibile utilizzare un metodo simile a quello mostrato qui .

Questi metodi hanno il vantaggio rispetto a PInvoke di essere al 100% .NET e di non dover giocherellare con il marshalling degli argomenti da / verso i tipi di dati della piattaforma e assicurarsi di aver convalidato tutti i valori di ritorno.

Esiste una libreria molto utile per molte attività di risorse all'indirizzo http: //resourcelib.codeplex .com

Molte classi e funzioni racchiudono quelle finestre-api-call in UpdateResource (...) , ecc.

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