簡體   English   中英

將程序宏代碼或堆棧值編譯成可執行文件?

[英]Compile procedural macro code or stack values into executable?

我正在編寫程序宏。 假設我有一個宏來用它的 hash 替換我的代碼中的每個密碼實例。 我不希望它包含在運行時的可執行文件或 memory 中。

編譯時使用的代碼和堆棧是否添加到二進制文件中? 我很確定他們不是,但我找不到明確的答案。

一般問題是“編譯環境中的 memory 是否有可能最終出現在最終的可執行文件中?”。

實際答案是否定的,特別是與編譯器的堆棧幀或在 proc-macro(在單獨的進程中運行)中使用的 memory 有關。

就安全性而言,答案肯定是肯定的。 一方面,編譯器不保證它不會在最終的可執行文件中包含其一般環境的一部分,例如,人們對他們的用戶名被包含在可執行文件中感到驚訝,因為依賴項會生成引用源的錯誤消息錯誤產生的文件( error at /home/myusername/foo/src/...的錯誤)。 其次,編譯器無法控制操作系統在做什么,所以它自己的部分行為(同樣,關於安全保證)是在那里實現定義的。

所以,如果你絕對必須保證你的令牌不包含在最終的可執行文件中,hash 甚至在首先調用編譯器進程之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM