C# IL-Kompilat anzeigen lassen

o0Julia0o

Commander
Registriert
Dez. 2012
Beiträge
2.796
hi, ich möchte mir das IL-Kompilat einer C#.exe anzeigen lassen. Wie gehe ich vor?

Ich habe die Datei mit der DeveloperConsole von VisualStudio geöffnet, bzw. mit ILDASM, welches ich über die DConsole aufgerufen habe & dann die exe Datei geöffnet.

lieben Dank

Julia :)
 
Korrekt.
 
achso - danke euch beiden, das ist damit gemeint... aber dann hänge ich an anderer Stelle.

Ich gehe folgendermassen vor:
1. ich öffne die DeveloperConsole von VisualStudio öffne & tippe dort ILDASM ein + Enter, woraufhin sich MS .Net Dissasembler öffnet
2. ich öffe die C#.exe & gehe auf dump ums sie zu dekompilieren
3. ich kann die *.res + *.il editieren & die exe-Datei wieder kompilieren per: Ilasm.exe /RESOURCE="Pfad zur .res Datei" "Pfad zur .il Datei" (Und die exe funktioniert danach auch noch)

Wenn ich aber eine von den *.resource-Dateien editiere(z.B. nur Test in einem Textfeld) klappt das mit dem kompilieren genauso: Ilasm.exe /RESOURCE="Pfad zur .res Datei" "Pfad zur .il Datei" Doch die exe kann ich danach nicht mehr starten:

Im Debugger steht dann:
Code:
 "System.BadImageFormatException was unhandled Message: An unhandled exception of type 'System.BadImageFormatException' occurred in mscorlib.dll Additional information: Beschädigte .resources-Datei. Aufgrund von ungültigen Headerinformationen können keine Ressourcen aus dieser Datei gelesen werden. Versuchen Sie, die .resources-Datei neu zu generieren."

Woran könnte das nun liegen?
 
Zuletzt bearbeitet:
Mal eine ganz blöde Frage: Was hast Du eigentlich vor? Und ja mir ist langweilig ^^
 
Möglicherweise stimmt die .Net-Version im Header der resource-File nicht mehr. Du müsstest, ggf das Framework beim kompilieren auf das Ausgangsframework stellen. Bin mir da aber nicht 100% sicher, einfach mal ausprobieren.

#Edit: Da ich mir nicht sicher war, habe ich mal google gespielt und folgendes bei msdn gefunden:
BadImageFormatException. Auch wenn heute nicht alles läuft, so schlecht ist mein Gedächtnis dann auch wieder nicht :)
 
Zuletzt bearbeitet:
@oiisamiio
na langeweile ist doch was schönes ;) - erstmal nix besonders.. ich kann gar nicht programmieren.. naja... ein hello world bekomme ich hin. Aber ich möchte erstmal wissen wie ich die resource-Dateien editiert wieder in die exe bekomme. Da steht dann z.B. ein Text drin: "Hallo ihr Lieben", den ich dann auf "Helau Ihr Lieben" ändere. Wenn ich wüsste, wie ich sowas generell hinbekomme, wäre ich schon froh.


hey danke Dir, PapstRatze. Das wird es aber wohl nicht sein, denn - wenn ich die dekompilierten Dateien ohne Änderung(oder mit Änderung der *.il und oder *.res) direkt wieder kompiliere, dann funktioniert die Exe ja.

Nur, wenn ich in einer der *.resources-Dateien etwas ändere(und nicht im Header, sondern in einem Textfeld), dann funktioniert die exe nachdem kompilieren nicht mehr. Der Witz ist, selbst wenn ich gar nichts verändere, sondern die *.resource-Datei Datei einfach nur mit einem Texteditor öffne und direkt wieder speicher, tritt das Problem auf. Die *.resources-Dateien beginnen so:
Code:
ÎÊï¾   ‘   lSystem.Resources.ResourceReader, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=
Irgendwie scheint der Standard-Texteditor(Win8) die Datei beim speichern umzuwandeln. Notepad++ zeigt in allen Formaten aber viel weniger an(also NUL als Platzhalter) als der Standardstexteditor von Win8.
 
Zuletzt bearbeitet:
Ja, bei dem Ausschnitt fehlt einiges. Eigentlich sollte die Resource-File vom Typ her xml sein. Und müsste damit auch mit sowas beginnen wie:
Code:
<?xml version...

Woher der Fehler jetzt kommt, kann ich dann allerdings nicht mit Gewissheit sagen, dafür fehlt mir der Einblick.

Grundsätzlich muss man das Programm nicht mehr Erstellen, wenn man an einer resource-file rumgefuscht hat, da diese keinen ausführbaren Code enthält. Allerdings weiß ich nicht, ob es der ideale Einstieg ist um Programmieren zu lernen :). Wie wäre es erstmal ganz normal in VS dein Programm zu schreiben und die Resource-File zu verändern.

Naja ich wünsche viel Erfolg beim lösen des Problems :)
 
Hallo,

Ich dachte Du willst Copyright oder Werbung entfernen oder ersetzen ;)

C# ist leicht zu erlernen, siehe Youtube oder Visual Studio Beispielanwendungen. Sogar lässt sich für Android oder IOS entwickeln. Xamarin stellt dazu selbst Videos und Beispiele bereit.

Gruß Sam
 
Zurück
Oben