Try   HackMD

自我檢查事項(sandbox)

contributed by<changyuanhua,vonchuang>

隔離執行環境的建構

Trusted Execution Environment (TEE) 的應用為何?(舉出共筆以外的真實世界案例)

是否已詳細閱讀 Moxie 處理器架構的 Architecture 文件?能否用 Moxie 組合語言寫出迴圈版本的 Fibonacci 數列程式?

binutils, gcc, glibc, qemu 到 libffi 這些專案的作用為何?

Intel 的 Software Guard Extensions 關鍵特性為何?並舉出共筆以外的應用案例

moxiebox 打造出隔離執行 (sandbox) 的運作環境該如何與外界溝通?列出對應的程式碼並解讀

提示: mmap 系統呼叫

是否已詳閱文件 sandbox execution environment 呢?解釋 法國的加密貨幣硬體錢包公司 Ledger 的 BOLOS 運作原理

何謂 cross compiler 呢?我們為何需要?

ELF 執行檔格式包含哪些 section 呢?又在哪裡可見到詳細描述?

是否已掌握 GNU gprof 的使用?運作原理為何?

提示: 參閱 raytracing 作業規範和共筆成果

是否已操作 remote GDB 呢?如何在執行時期檢驗載入的 ELF 執行檔裡頭 .text 和 .data section 內容呢?

是否詳讀文件 遠端除錯 並記錄心得呢?是否在 GNU/Linux 實際照著操作?又,遇到什麼問題呢?

提示: 硬體架構以不同,文章提及 IA32,但現在已是 x86_64 架構

GDB 命令如 step 是如何透過 GDB stub 傳遞到 moxiebox 裡頭呢?兩邊的通訊協定又為何?

提示: 需要對照看 moxiebox 的 src/sandbox.cc 檔案內容和 GDB Remote Serial Protocol

是否理解 GDB Macro 和 Command Files 呢?能否透過 moxiebox 進行練習呢?

Model Checking

cbmc 的作用為何?在什麼領域會需要呢?

能否簡介自動機理論 (automata theory) 呢?

model checking 中局部狀態表示每個主題執行通訊協定的過程,而所有局部狀態構成全域狀態,每個局部狀態的改變由主體的訊息接收、發送來觸發,能否舉出實際案例說明?

是否已編譯 cbmc 並用來分析 C 程式呢?若是,舉出詳細的操作和你的解讀

務必詳閱 CBMC: Bounded Model Checking for C/C++ and Java: A Short Tutorial

以 moxiebox 為例,能否使用 cbmc 來找出程式碼實作的缺陷 (或者自己創造) 呢?

在 GitHub 專案中找出使用 model checking 的案例,並且具體說明其作用 (當然要親自實驗)