在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Go語言的默認(rèn)機制

Linux愛好者 ? 來源:Linux愛好者 ? 作者:Linux愛好者 ? 2022-03-21 11:50 ? 次閱讀

本文介紹了作者避免開發(fā)者信息泄露的思路。

Go實在是太棒了。一處編譯,處處運行,沒有依賴,毫無麻煩!

不過麻煩的事情來了。我們寫一個程序,就是想在別人的電腦上運行的。然而,Go語言的默認(rèn)機制,會泄漏我們的一些信息,雖然不多,但也有點尷尬。本文結(jié)合網(wǎng)上的一些常用方法,總結(jié)出一套通用的簡單易行的保護(hù)措施。

刪除調(diào)試符號

默認(rèn)情況下go編譯出的程序在運行出錯時會輸出自己在哪個線程哪個文件哪個函數(shù)哪行出的錯,就像這樣,

af7bfa50-9880-11ec-952b-dac502259ad0.png

DWARF信息對于小黑客們可是如獲至寶,這些關(guān)鍵信息不能留下。而且去掉這些東西也非常簡單:

gobuild-ldflags"-s-w”[

(需要Go版本大于1.7)

這里的 -ldflags 參數(shù)最終會在 go tool link 的時候傳給它, go tool link -h解釋如下

...
-sdisablesymboltable
-wdisableDWARFgeneration

刪除掉調(diào)試符號的另一個好處就是,顯著減小了文件大小(平均20%)

-rwxr-xr-x1timstaff1636736May511:59bin/hello<-?標(biāo)準(zhǔn)編譯
-rwxr-xr-x?1?tim?staff?1190272?May?5?11:59?hello??????<-?stripped

再加一個UPX殼,還可以壓縮到原文件大小的五分之一!不知道為啥,go語言的二進(jìn)制特別好壓!

刪除trace文件信息

在go中觸發(fā) panic 時,上圖的文件目錄也是泄漏信息的一部分。比如上圖就包括了小黑客用的操作系統(tǒng)Linux),小黑客的名字(nikos),如果你用homebrew版本的Go還會泄漏你的編譯器版本。所以這些當(dāng)然也要刪掉!

這些信息的來源是編譯器運行時所處環(huán)境的環(huán)境變量。

上圖中的函數(shù)編譯時,環(huán)境變量就是這樣。

GOROOT=/opt/go
GOPATH=/home/nikos/projects/go
GOROOT_FINAL=$GOROOT

這幾個都是可以改的哦。根據(jù)參考資料,編譯時GO會從GOROOT提取標(biāo)準(zhǔn)庫,在打包時將GOROOT改寫為GOROOT_FINAL并作為trace信息的一部分寫入目標(biāo)文件。改寫$GOPATH的方式也很簡單,在一個不起眼的目錄里對真實的GOPATH創(chuàng)建一個軟鏈接(快捷方式),編譯器在尋找時就會把快捷方式的目錄名寫到最終文件里,從而達(dá)到我們隱藏自己的目的。

話不多說,上代碼。放到自己的.bash_profile或.zshrc中即可

ACTUAL_GOPATH="~/Programming/go"
exportGOPATH='/tmp/go'
exportGOROOT_FINAL=$GOPATH
[!-d$GOPATH]&&ln-s"$ACTUAL_GOPATH""$GOPATH"
[[!$PATH=~$GOPATH]]&&exportPATH=$PATH:$GOPATH/bin

我個人把GOROOT_FINAL也寫入為GOPATH,其實這個字符串可以是任意值,但寫成一樣的話,可以讓逆向人員無法分辨,調(diào)用的庫是我們自己寫的還是go語言的標(biāo)準(zhǔn)庫。非常猥瑣哦~

這樣一來,生成的二進(jìn)制文件就相當(dāng)于其他語言編譯時的Release版本了。再發(fā)散一下,自己寫一個庫,將關(guān)鍵的字符串做成外部資源并在調(diào)用時解密,代碼中不保留明文,再破解就只能人肉跟蹤函數(shù)了。滿分!

原文標(biāo)題:Golang二進(jìn)制文件混淆保護(hù)

文章出處:【微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭菁

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3817

    瀏覽量

    82148
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4880

    瀏覽量

    69982
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    674

    瀏覽量

    33580

原文標(biāo)題:Golang二進(jìn)制文件混淆保護(hù)

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Go語言簡介和安裝方法

    Go 又稱 Golang ,是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發(fā)的一種靜態(tài)強類型、編譯型語言Go 語言語法與
    發(fā)表于 07-19 16:33 ?662次閱讀

    Go語言常量的聲明

    Go 語言中, 常量 表示的是固定的值,常量表達(dá)式的值在編譯期進(jìn)行計算,常量的值不可以修改。例如:3 、 Let's go 、 3.14 等等。常量中的數(shù)據(jù)類型只可以是 布爾型 、 數(shù)字型 (整數(shù)型、浮點型和復(fù)數(shù))
    發(fā)表于 07-20 15:24 ?506次閱讀

    Go語言中的整數(shù)類型

    Go 語言中,整型可以細(xì)分成兩個種類十個類型。
    發(fā)表于 07-20 15:25 ?1062次閱讀

    Go語言開發(fā)有什么優(yōu)勢?怎么學(xué)?

      目前很多IT界的朋友們開始了學(xué)習(xí)Go這個語言,作為最近幾年比較火的服務(wù)端開發(fā)語言,其開發(fā)效率高的特性,使得它迅速的占領(lǐng)了各大公司的服務(wù)端開發(fā)領(lǐng)域。相比其他服務(wù)端開發(fā)語言
    發(fā)表于 12-19 16:08

    go語言能做什么工作?

    Go語言主要用作服務(wù)器端開發(fā),其定位是用來開發(fā)“大型軟件”的,適合于很多程序員一起開發(fā)大型軟件,并且開發(fā)周期長,支持云計算的網(wǎng)絡(luò)服務(wù)。Go語言能夠讓程序員快速開發(fā),并且在軟件不斷的增長
    發(fā)表于 03-22 15:03

    Go開發(fā)語言的優(yōu)勢在哪里?

    Go語言是谷歌發(fā)布的第二款開源編程語言,可以在不損失應(yīng)用程序性能的情況下降低代碼的復(fù)雜性,并專門針對多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,開發(fā)速度極快,可以與C或C++媲美,而且更加安全、支持并行
    發(fā)表于 03-22 15:04

    網(wǎng)易有道CEO周楓推薦Go語言并介紹Go語言的3個優(yōu)點

    網(wǎng)易有道CEO周楓推薦Go語言。他認(rèn)為Go很好地繼承了C語言靈活、簡單有效的思想;Go有很高的生產(chǎn)效率;
    的頭像 發(fā)表于 01-31 14:11 ?5331次閱讀

    Go語言在世界各地的使用情況如何?

    【導(dǎo)讀】Go語言在世界各地的使用情況如何?數(shù)據(jù)說話,帶你直觀感受什么叫“酷小孩都用的語言”! JetBrains 官方博客發(fā)表了一篇題為"The state of Go"的文章,他們通
    的頭像 發(fā)表于 02-26 14:10 ?4335次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b>在世界各地的使用情況如何?

    詳解GO語言的趨勢與使用情況

    Go 語言簡單易學(xué)、性能優(yōu)良。JetBrains Blog 發(fā)布了Go 語言的調(diào)查報告,看看GO 語言
    的頭像 發(fā)表于 03-17 11:05 ?3178次閱讀

    Go語言憑借什么成為云原生第一語言的?

    偶然看到有人說, Go 語言目前的火爆可能就是曇花一現(xiàn)而已。這個觀點我當(dāng)然是不認(rèn)同的。 近幾年,關(guān)于 Go 與 Java 還有 C 的對比和討論愈演愈烈,但不可否認(rèn)的是,在十年多的時間里,Go
    的頭像 發(fā)表于 04-22 10:15 ?3331次閱讀
    <b class='flag-5'>Go</b><b class='flag-5'>語言</b>憑借什么成為云原生第一<b class='flag-5'>語言</b>的?

    Go編譯器已默認(rèn)啟用-G=3支持泛型

    Go 項目代碼倉庫昨日提交和合并的一個 PR 顯示,Go 語言已在 cmd/compile 中默認(rèn)啟用 -G=3。 根據(jù)描述,此 PR 將 cmd/compile 的 -G flag
    的頭像 發(fā)表于 09-01 15:52 ?2957次閱讀
    <b class='flag-5'>Go</b>編譯器已<b class='flag-5'>默認(rèn)</b>啟用-G=3支持泛型

    go語言枚舉類型怎么用

    go 語言枚舉類型是這么用的?在什么場景下會用到枚舉?本文對 go 語言枚舉做了詳細(xì)講解。 枚舉,是一種重要的數(shù)據(jù)類型,由一組鍵值對組成,通常用來在編程
    的頭像 發(fā)表于 09-02 09:43 ?5358次閱讀

    帶你了解go語言中的閉包

    ? 【 導(dǎo)讀】什么是閉包? 什么場景下會用閉包 ? 本文對 go 語言中的閉包做了詳細(xì)介紹。 閉包是由函數(shù)及其相關(guān)引用環(huán)境組合而成的實體(即:閉包=函數(shù)+引用環(huán)境)。 Go中的閉包 閉包是函數(shù)式
    的頭像 發(fā)表于 11-02 15:27 ?2602次閱讀

    go語言中怎么使用HTTP代理

    go語言中怎么使用HTTP代理。
    的頭像 發(fā)表于 09-01 14:41 ?2564次閱讀

    go語言如何解決并發(fā)問題

    作為一個后端開發(fā),日常工作中接觸最多的兩門語言就是PHP和GO了。無可否認(rèn),PHP確實是最好的語言(手動狗頭哈哈),寫起來真的很舒爽,沒有任何心智負(fù)擔(dān),字符串和整型壓根就不用區(qū)分,開發(fā)速度真的是比
    的頭像 發(fā)表于 10-23 13:38 ?347次閱讀
    <b class='flag-5'>go</b><b class='flag-5'>語言</b>如何解決并發(fā)問題
    主站蜘蛛池模板: 视频网站黄 | 91av在线视频观看 | 最新四虎4hu影库地址在线 | www.日本免费 | 狠狠色丁香婷婷综合激情 | 欧美无遮挡国产欧美另类 | 天堂网www中文在线 天堂网传媒 | 免费在线观看的视频 | 成人特黄午夜性a一级毛片 成人网18免费下 | 免费可以看黄的视频 s色 | 天天干夜夜笙歌 | 久久国产精品视频 | 毛片不卡一区二区三区 | 一级录像 | 日本久操| 亚洲伊人色一综合网 | 亚洲综合色婷婷 | 曰本女人一级毛片看一级毛 | 亚洲精品资源 | 午夜免费视频福利集合100 | 国产黄色a三级三级三级 | 1024视频在线观看国产成人 | 亚洲理论在线观看 | 视频h在线观看 | 澳门久久 | 美女被免费网站视频九色 | 久草一区 | 九色97| 国产夜夜爽 | 亚洲无色 | 日韩免费网站 | 99久久精品费精品国产一区二 | 色综合社区| 亚洲系列_1页_mmyy11 | 色丁香在线观看 | 天天涩综合 | 一区二区美女视频 | 精品美女在线观看 | 欧美怡红院免费全部视频 | 51vv福利视频在线精品 | 狠狠干一区|