Heim Backend-Entwicklung Golang Kann Golang dekompiliert werden?

Kann Golang dekompiliert werden?

Dec 28, 2022 am 11:14 AM
golang go语言 反编译

golang kann nicht dekompiliert werden. Grund: Golang ist eine kompilierte statische Sprache. Binärdateien sind Dateien, die in ASCII und erweiterten ASCII-Zeichen geschrieben sind. Diese Dateien enthalten spezielle Formate und Computercodes. Kann nicht dekompiliert werden.

Kann Golang dekompiliert werden?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

golang unterstützt keine Dekompilierung.

Grund:

Go-Sprache ist eine kompilierte statische Sprache. Bevor ein Go-Sprachprogramm ausgeführt wird, muss es daher in eine binäre ausführbare Datei kompiliert werden.

Golang generiert nach der Kompilierung Binärdateien. Binärdateien sind Dateien, die in ASCII und erweiterten ASCII-Zeichen geschriebene Daten oder Programmanweisungen enthalten. Diese Dateien enthalten spezielle Formate und Computercodes und können daher 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 Der ASCII-Wert, während Binärdateien nur 4 Bytes benötigen (DB 0F 49 40) 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 des Binärspeichers bei einigen relativ präzisen Daten nicht zum Verlust gültiger Bits.

So werden Binärdateien gespeichert

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
Nach dem Login kopieren

Die hier aufgeführten Dinge sind das, 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 insgesamt 32 Bytes 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) gelten als 16-Byte-Zeichenfolge (ABCDEFGHIGKLMNOP)

Tatsächlich speichern Binärdateien nur Daten Zum Beispiel ist das 9. Byte bis zum 16. Byte oben (12 53 21 45 58 62 35 34) nicht angegeben. Wir dachten nur, es handele sich um zwei 4-Byte-Realtypen, aber tatsächlich kann es auch als 8-Byte-Zeichentyp betrachtet werden (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.

【Verwandte Empfehlungen:

Go-Video-Tutorial

, Programmierunterricht

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Wie kann sichergestellt werden, dass die Parallelität beim Schreiben von Multi-Process-Protokollen sicher und effizient ist? Wie kann sichergestellt werden, dass die Parallelität beim Schreiben von Multi-Process-Protokollen sicher und effizient ist? Apr 02, 2025 pm 03:51 PM

Effizient behandeln Probleme mit der Parallelitätssicherheit beim Schreiben von Multi-Process-Protokoll. Mehrere Prozesse schreiben gleichzeitig die gleiche Protokolldatei. Wie kann die Parallelität sicher und effizient sichergestellt werden? Das ist ein ...

See all articles