去找吧!我把所有資料都藏在那了 - 通向 Section 航道的旅程
前言
「我要成為海賊王!」
這句話大家應該不陌生吧。寫程式有時候就像在 偉大航道上尋寶。
這次的寶藏不是什麼「One Piece」,而是──把設定檔藏在 ELF Binary 裡的秘密空間。
最近剛好遇到一個需求:想把資料包進程式裡,方便部署,但又不想讓人隨便亂改。
就像在跟同學們玩「海上捉迷藏」一樣,所以筆者決定把設定藏進一個 神秘的 section,然後用小工具去 patch。
於是乎本篇就誕生了。
心之所至,隨意亂書
共有 13 篇文章使用了此分類
「我要成為海賊王!」
這句話大家應該不陌生吧。寫程式有時候就像在 偉大航道上尋寶。
這次的寶藏不是什麼「One Piece」,而是──把設定檔藏在 ELF Binary 裡的秘密空間。
最近剛好遇到一個需求:想把資料包進程式裡,方便部署,但又不想讓人隨便亂改。
就像在跟同學們玩「海上捉迷藏」一樣,所以筆者決定把設定藏進一個 神秘的 section,然後用小工具去 patch。
於是乎本篇就誕生了。
在 Go 世界裡,可移植性 一直是它引以為傲的特性。大部分時候,我們只要 go build
就能得到一個幾乎純靜態的二進位,拿去其他機器執行也不太會出問題。然而,這種「幾乎」背後,跟 cgo
和 cmd/link
的運作有很大關係。本文將以 cgo 為核心,延伸到 linkmode 與 musl-gcc 的應用,帶同學們理解 Go 執行檔在靜態與動態鏈結上的差異。
在撰寫 Go 程式的過程中,有時候我們會遇到這樣的情境:某些功能已經有穩定的 C 函式庫可以使用,若能直接呼叫這些現有資源,就能避免重複造輪子。
Go 語言本身提供了 cgo
這個工具,讓我們能順利地在 Go 程式中嵌入並呼叫 C 程式碼。
本文會帶你從基礎開始認識 cgo
,並透過範例說明如何在 Go 專案中使用它。
有時候我們登入服務時,螢幕會跳出一句:「你的驗證碼是 123456」。這串數字只能用一次,過了幾十秒就失效了。這種機制叫做 OTP(One-Time Password,一次性密碼)。
它看似簡單,卻是今天大多數二階段驗證(2FA)或多因子驗證(MFA)的基石。這篇文章,就來聊聊 OTP 的運作方式,最後會給一個 Go 的範例程式,讓你自己動手試試。
會有這一篇的誕生是因為原本在寫 gRPC 的筆記時發現篇幅太長,想說還是拆開寫好了。於是乎這一篇就出現了。
最近發現家中的 NAS 速度 “好像” 沒有達到筆者的預期。所以想來實際測看看可以目前的網路環境可以跑到什麼程度。於似乎這一篇就誕生了。
最近終於有時間整裡筆者家中的 NAS 。先前筆者已經架設好了 Gitea,但一直沒有時間把整個開發環境串起來。這篇文章記錄了如何在 go 中使用自架的 Git Repository。
最近寫 Go 時想嘗試使用動態連結函式庫。於是乎這一篇就誔生了。 本文會試著使用 Go 編出一個動態連結函式庫,並使用 C 語言程式以及 Go 語言程式呼叫它。
最近剛好有機會要寫有圖形化介面的程式。想來想去感覺可以寫寫看 Electron!於是乎本篇就這樣誕生了。
筆者已經習慣 vim 的輸入模式。所以在使用 VS Code 或 Cursor 時,會安裝 vim 輸入模式的外掛。在鍵盤按鍵接住時,這些編輯器卻不會連續輸入。本文主要就是要來解決這個問題。