Heim > Artikel > Backend-Entwicklung > Kann Golang dekompiliert werden?
Kann Golang dekompiliert werden?
Golang kann nicht dekompiliert werden, da Golang in eine Binärdatei kompiliert wird und eine Binärdatei eine Datei ist, die in ASCII geschriebene Daten oder Programmanweisungen und erweiterte ASCII-Zeichen enthält. Diese Dateien enthalten spezielle Formate und Computercode Daher kann es nicht dekompiliert werden.
Vorteile von Binärdateien
Warum Binärdateien verwenden? Es gibt wahrscheinlich drei Gründe:
Der erste ist, dass Binärdateien Platz sparen und es beim Speichern von Zeichendaten keinen Unterschied zwischen den beiden gibt. Beim Speichern von Zahlen, insbesondere reellen Zahlen, ist Binär jedoch platzsparender. Wenn Sie beispielsweise Real*4-Daten speichern: 3.1415927, benötigt eine Textdatei 9 Bytes und speichert jeweils: 3. 1 4 1 5 9 2 7 diese 9 ASCII-Wert, während Binärdateien nur 4 Bytes benötigen (DB 0F 49 40)
Der zweite Grund ist, dass die an Berechnungen beteiligten Daten im Speicher im binären, unformatierten Format gespeichert werden. Daher ist es schneller, Binärdateien zum Speichern in der Datei zu verwenden . Bei der Speicherung als Textdatei ist ein Konvertierungsprozess erforderlich. Wenn die Datenmenge groß ist, besteht ein erheblicher Geschwindigkeitsunterschied zwischen beiden.
Drittens führt die Verwendung der Binärspeicherung bei einigen relativ genauen Daten nicht zum Verlust gültiger Bits.
Speichermethode für Binärdateien
Listen Sie eine Binärdatei wie folgt auf:
00000000h:0F 01 00 00 0F 03 00 00 12 53 21 45 58 62 35 34; .........S!EXb54
00000010h:41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50; ABCDEFGHIGKLMNOP
Aufgeführt Hier kommt heraus, was Sie in UltraEdit (UE) sehen. Tatsächlich ist nur der rote Teil der Dateiinhalt. Das Vorstehende ist die von UE hinzugefügte Zeilennummer. Was folgt, ist eine Referenz, die UE als Zeichen zu interpretieren versucht.
Diese Datei ist 32 Byte lang. Wird als zwei Spalten mit jeweils 16 Byte angezeigt. Tatsächlich ist dies nur eine Anzeige von UE. Echte Dateien haben keine separaten Zeilen. Wenn wir nur den Inhalt dieser Datei kennen und keine Erklärung haben, können wir keine nützlichen Informationen sehen.
Ich werde unten eine Erklärung angeben: Wir glauben, dass die ersten 4 Bytes ganzzahlige 4-Byte-Daten sind (0F 01 00 00 hexadezimal: 10Fh dezimal: 271). Die 4 Bytes nach diesen 4 Bytes sind weitere 4 Bytes ganzzahliger Daten (0F 03 00 00 hexadezimal: 30Fh dezimal: 783). Die folgenden 4 Bytes (12 53 21 45) stellen reale 4-Byte-Daten dar: 2.5811919E+3. Die nächsten 4 Bytes (58 62 35 34) stellen weitere 4 Bytes Ausführungsdaten dar: 1.6892716E-7. Und nur die letzten 16 Bytes (41 42 43 44 45 46 47 48 49 47 4B 4C 4D 4E 4F 50) stellen wir uns als 16-Byte-String vor (ABCDEFGHIGKLMNOP)
Eigentlich wird die Binärdatei nur gespeichert Daten ohne Angabe des Datentyps, zum Beispiel vom 9. Byte bis zum 16. Byte oben (12 53 21 45 58 62 35 34), wir dachten nur, es handele sich um zwei 4-Byte-Realtypen, aber es kann tatsächlich als ein angesehen werden 8-Byte-Zeichentyp (S!EXb54). Die folgende 16-Byte-Zeichenfolge (ABCDEFGHIGKLMNOP) kann auch als zwei 8-Byte-Ganzzahlen oder vier 4-Byte-Ganzzahlen oder sogar zwei 8-Byte-Realtypen und vier 4-Byte-Realtypen usw. betrachtet werden.
Daher können wir bei einer Binärdatei ihre Bedeutung nicht genau kennen. Wir benötigen eine Beschreibung ihrer Datenspeichermethode. Diese Beschreibung sagt uns, welche Art von Daten von welchem Byte zu welchem Byte gehören und welche Bedeutung die gespeicherten Daten haben. Ansonsten können wir nur raten oder hilflos sein.
Empfohlenes Tutorial: „Go Tutorial“
Das obige ist der detaillierte Inhalt vonKann Golang dekompiliert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!