好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Golang二進制文件混淆保護操作

Golang二進制文件混淆保護操作

熱門標簽:利用地圖標注位置 地圖區域圖標注后導出 赤峰電銷 杭州人工智能電銷機器人費用 官渡電銷外呼管理系統怎么收費 谷歌美發店地圖標注 江蘇呼叫中心外呼系統有效果嗎 400開頭電話怎樣申請 貴州電話智能外呼系統

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

不過麻煩的事情來了。我們寫一個程序,就是想在別人的電腦上運行的。然而,Go語言的默認機制,會泄漏我們的一些信息,雖然不多,但也有點尷尬。

本文結合網上的一些常用方法,總結出一套通用的簡單易行的保護措施。

減少 golang 二進制文件大小

1、刪除調試符號

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

圖片來源StackOverflow

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

go build -ldflags "-s -w” [your/package]

(需要Go版本大于1.7)

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

...

-s disable symbol table

-w disable DWARF generation

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

-rwxr-xr-x 1 tim staff 1636736 May 5 11:59 bin/hello - 標準編譯

-rwxr-xr-x 1 tim staff 1190272 May 5 11:59 hello - stripped

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

2、刪除trace文件信息

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

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

上圖中的函數編譯時,環境變量就是這樣。

GOROOT=/opt/goGOPATH=/home/nikos/projects/goGOROOT_FINAL=$GOROOT

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

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

ACTUAL_GOPATH="~/Programming/go"
export GOPATH='/tmp/go'
export GOROOT_FINAL=$GOPATH
 [ ! -d $GOPATH ]  ln -s "$ACTUAL_GOPATH" "$GOPATH"
 [[ ! $PATH =~ $GOPATH ]]  export PATH=$PATH:$GOPATH/bin

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

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

3.使用 UPX 給程序加殼

UPX 不僅能大幅壓縮 Golang 靜態編譯的二進制程序,更能有效的增加反匯編的難度。具體命令為:

upx --brute [ binary ]

UPX 副作用是會增加程序的啟動時間,但也無妨啦!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang中struct和[]byte的相互轉換示例
  • 減少 golang 二進制文件大小操作
  • 淺談golang二進制bit位的常用操作
  • Golang如何交叉編譯各個平臺的二進制文件詳解
  • Golang如何實現任意進制轉換的方法示例
  • golang 將[]byte轉成16進制的實現

標簽:松原 鷹潭 泰安 河池 保定 黔西 武漢 宜春

巨人網絡通訊聲明:本文標題《Golang二進制文件混淆保護操作》,本文關鍵詞  Golang,二進制,文件,混淆,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang二進制文件混淆保護操作》相關的同類信息!
  • 本頁收集關于Golang二進制文件混淆保護操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 色噜噜噜噜色| 上英语课c英语课代表| 国产午夜精品福利| 一级做a爰片毛片A片的价格| 博罗县| 伦理电影午夜伧理片| 69凹凸国产成人精品视频| 韩国三级在线| 肉大捧一进一出免费公交车| 四川少妇bbw搡bbbb搡bbbb| 欧美黑人一区二区| 琪琪色视频| 日本成在人线av无码免费高潮| 啊啊嗯好舒服| 餐桌下狂c亲女高辣h文| 扒开美女?狂揉?上门| 三上悠亚磁力| 欧美AV无码白嫩一区二区不卡 | 小泽玛利亚AV在线播放| 爱操综合| 恩恩呜呜好大好爽快点| 日本一区二区三区不卡视频中文字幕| bg高h| 国产精品v一区二区三区| 91人妻人人爽精品破学生处| 老熟女亲子伦视频在线| 深夜福利免费精品国偷自产在线| 四虎地址| 俄罗斯高清无专砖吗二区| 聊斋一级毛片又长又又粗又大| 比比资源影音先锋| 菠萝菠萝蜜影视观看3| 蜜臀Av一区二区三区在线视频| 午夜片在线| 女教师被女同学调教成脚奴| 舔下面的视频| 国产做受69???高潮游戏| 挺进男同的屁股眼o漫画| 日韩免费视频| 91精品国产综合久久久久久不卡 | 色综合久久天天综合网|