# 自我檢查事項(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 的案例,並且具體說明其作用 (當然要親自實驗)