為了避免反編譯,必須從已編譯的 Go 程式碼中刪除偵錯資訊。雖然 Go 編譯器 (gc) 的預設行為包含偵錯訊息,但有一些方法可以刪除它。
使用-ldflags 的解決方案:
使用-ldflags 標誌編譯期間:
go build -ldflags="-s -w"
此標誌設定連結器標誌以刪除符號表(-s) 和調試資訊(-w)。
使用-trimpath 的解決方案:
此外,在Go 1.13 及更高版本中,您可以使用-trimpath 來減少儲存在執行檔中的文件路徑的長度。這可以進一步防止反編譯嘗試。
go build -ldflags="-s -w -trimpath=/path/to/trim"
注意:
使用 gccgo 不是一個可行的解決方案,因為它需要調試資訊才能正常運作。使用 -g 標誌刪除偵錯資訊將導致可執行檔損壞。因此,建議的方法是 -ldflags 和 -trimpath。
以上是如何從已編譯的 Go 程式碼中刪除偵錯資訊以防止反編譯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!