2016-08-08 34 views
0

dekompilieren Ich forschte an einem Programm (ausführbare Datei). Ich habe das Programm mit ILSpy dekompiliert. Während ich den Quellcode überprüfte, entdeckte ich eine Funktion, die folgendermaßen aussah:Wie kann ich native innerhalb C#

/ <Module> 
[SuppressUnmanagedCodeSecurity] 
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]  
internal unsafe static extern PointerObject* Function(sbyte*); 

Es gab keine Implementierung. Wie kann ich das zerlegen?

Antwort

0

Eine Methode mit dem Schlüssel extern bedeutet, dass die Implementierung dieser Methode in einer externen Datei angegeben ist. Sie können mehr über extern in der MSDN Docs lesen. Normalerweise würden Sie eine DLLImportAttribute sehen, welche den Namen der Assembly, die das Verfahren in implementiert angeben würde.

MethodImpOptions.Unmanaged bedeutet, dass der Aufruf von nicht verwaltetem Code gemacht wird (C, C++, etc.) und MethodImpOptions.PreserveSig bedeutet, dass das Verfahren Wesen aufgerufen hat die exakt gleiche Methodensignatur.

Darüber hinaus kann ich Ihnen nicht viel erzählen.

0

Da dies ein systemeigener Aufruf ist, benötigen Sie einen nativen Disassembler. Es gibt eine Menge Auswahlmöglichkeiten mit einem völlig anderen Ausgabeumfang, aber Sie werden wahrscheinlich ein gutes Verständnis von x86-Assembly und Windows-Programmierung benötigen, um alles Nützliche aus der Disassemblierung zu erhalten - es ist zum Beispiel nichts wie zerlegter C# -Code.

Der systemeigene Code befindet sich möglicherweise in einer separaten DLL oder in einem nativen Modul in derselben Assembly. Sie müssen überprüfen, wo diese extern-Definition hinweist.

Haftungsausschluss: Demontage und/oder Verwendung von auf diese Weise erhaltenen Kenntnissen kann illegal sein, wo Sie sind; stellen Sie sicher, dass Sie die geltenden Gesetze kennen.