Wenn Sie genau wissen möchten, welche Operationen ein Programm auf Ihrem Computer tatsächlich ausführt, gibt es mehrere Möglichkeiten. Eine offensichtlich einfache ist, in den zur Verfügung stehenden Quellcode der Datei zu schauen. Bei Skriptsprachen wie Python oder quelloffener Software ist das ohne weiteres möglich. Wenn Programme vor der Auslieferung jedoch in Bytecode übersetzt werden, ist die Arbeit eines Analysten etwas komplizierter.
Beim Übersetzen von Code in ein lauffähiges Programm sind verschiedene Werkzeuge involviert, in den meisten Fällen mindestens ein Compiler (Übersetzer) und ein Linker (oder Binder). Ausgehend von den Befehlen einer Programmiersprache erstellt der Compiler die Maschinensprache. Dabei optimiert er die Ausführungsreihenfolge beziehungsweise einzelne Operationen je nach Konfiguration mal mehr und mal weniger, was am Ende durchaus große Auswirkungen auf den resultierenden Maschinencode haben kann. Beim Linken werden genutzte Bibliotheken statisch oder dynamisch mit dem Programm verbunden. Beim statischen Linken wird der verwendete Code aus den Bibliotheken dem resultierenden Programm hinzugefügt. Werden Bibliotheken dynamisch gelinkt, liegt der Code in anderen Dateien und wird erst beim Start des Programms in den Arbeitsspeicher des Prozesses eingebunden.
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.