Web Bilder Videos Maps News Shopping Google Mail Mehr »
Kürzlich besuchte Gruppen | Hilfe | Anmelden
Google Groups-Startseite
Nachricht von Diskussion .NET-exe oder 'normale' exe?
Bei der Gruppe, für die Sie eine Mitteilung verfassen, handelt es sich um eine Usenet-Gruppe. Wenn Sie in dieser Gruppe Nachrichten posten, ist Ihre E-Mail-Adresse für jeden im Internet sichtbar
Ihre Antwort wurde nicht gesendet.
Die Nachricht wurde übermittelt.
 
Von:
An:
Cc:
Nachtrag zu:
Cc hinzufügen | Nachtrag hinzufügen zu | Betreff bearbeiten
Betreff:
Bestätigung:
Geben Sie zur Bestätigung die im folgenden Bild angezeigten Zeichen oder die durchgesagten Zahlen ein, indem Sie auf das Eingabesymbol klicken. Hören Sie zu und geben Sie die gehörten Zahlen ein
 
Thomas Scheidegger [MVP]  
Profil anzeigen   Übersetzen in die Sprache: Übersetzt (Original anzeigen)
 Weitere Optionen 31 Aug. 2003, 11:44
Newsgroups: microsoft.public.de.german.entwickler.dotnet.framework
Von: "Thomas Scheidegger [MVP]" <spam.netmas...@swissonline.ch>
Datum: Sun, 31 Aug 2003 11:43:16 +0200
Lokal: So 31 Aug. 2003 11:43
Betreff: Re: .NET-exe oder 'normale' exe?
  > eine Methode schreiben, die die EXE reinlädt, untersucht

Mit den Infos aus .NET SDK und
  http://msdn.microsoft.com/msdnmag/issues/02/02/PE/
  http://msdn.microsoft.com/msdnmag/issues/02/03/pe2/
habe ich rasch eine Hilfs-Methode 'IsClrImage' erstellt (Code unten).
Diese macht einen minimal-Test auf PE-Dateiformat,
liest IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR an Offset 208 und prüft
so vorhandensein einer RVA-Adresse für IMAGE_COR20_HEADER Struktur.

Für mehr wirds aufwändiger, es scheint hier 'SharpAssembly' hilfreich:
   http://groups.google.ch/groups?selm=Owy4So6SDHA.2768%40tk2msftngp13.p...
   http://sourceforge.net/projects/sharpdevelop

// ============================= use at your own risk ===========================
  static bool IsClrImage( string fileName )
  {
   FileStream fs = null;
   try
   {
    fs = new FileStream( fileName, FileMode.Open, FileAccess.Read, FileShare.Read );
    byte[] dat = new byte[300];
    fs.Read( dat, 0, 128 );
    if( (dat[0] != 0x4d) || (dat[1] != 0x5a) )  // "MZ" DOS header
     return false;

    int lfanew = BitConverter.ToInt32( dat, 0x3c );
    fs.Seek( lfanew, SeekOrigin.Begin );
    fs.Read( dat, 0, 24 );      // read signature & PE file header
    if( (dat[0] != 0x50) || (dat[1] != 0x45) )  // "PE" signature
     return false;

    fs.Read( dat, 0, 96 + 128 );    // read PE optional header
    if( (dat[0] != 0x0b) || (dat[1] != 0x01) )  // magic
     return false;

    int clihd = BitConverter.ToInt32( dat, 208 ); // get IMAGE_COR20_HEADER rva-address
    return clihd != 0;
   }
   catch( Exception )
   {
    return false;
   }
   finally
   {
    if( fs != null )
     fs.Close();
   }
  }
// =========================================================================== ===

--
 Thomas Scheidegger - MVP .NET - 'NETMaster'
 http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/


    Antwort an Autor    Weiterleiten  
Sie müssen sich anmelden, bevor Sie Nachrichten veröffentlichen können.
Bevor Sie eine Nachricht posten können, müssen Sie zunächst dieser Gruppe beitreten.
Bitte aktualisieren Sie vor dem Posten in den Abonnementeinstellungen Ihren Spitznamen.
Sie haben nicht die erforderliche Berechtigung zum Posten.

Eine Gruppe erstellen - Google Groups - Google-Startseite - Nutzungsbedingungen - Datenschutzbestimmungen
©2009 Google