iT邦幫忙

鐵人檔案

第 11 屆 iThome 鐵人賽
回列表
Software Development

從 Rust 往程式底層前進 系列

主要想介紹 Rust 中一些語言特性的實作與程式的運作機制等

參賽天數 12 天 | 共 26 篇文章 | 22 人訂閱 訂閱系列文 RSS系列文
DAY 11

Stack Overflow 3 - ASLR

這篇要來講上一篇沒講完的部份,不知道你有沒有實際去試試看,如果不用 gdb 的話那個測試 RCE 的實驗還跑不跑的起來呢?如果你有試過就會知道答案是跑不起來,所...

2019-09-26 ‧ 由 DanSnow 分享
DAY 12

在 main 函式之前

我們的 main 真的是程式一開始執行的點嗎?還記得在 gdb 中看程式是怎麼執行過來的指令 bt 嗎,我們用 gdb 把中斷點設在 main 函式,在執行起來...

2019-09-27 ‧ 由 DanSnow 分享
DAY 12

在 main 函式之前 2

前一篇看完了 Rust 本身加在 main 前的程式碼,對了,前一篇中好像沒有提到 Rust 程式中的那個 C 的 int main(int, char **)...

2019-09-29 ‧ 由 DanSnow 分享
DAY 12

執行檔格式 - ELF

所以我們平常在執行的程式檔案裡放了些什麼,又是怎麼存的呢?這就要講到執行檔的格式 ELF 了, ELF 的全名是 Executable and Linkable...

2019-09-29 ‧ 由 DanSnow 分享
DAY 12

連結器 - 重定址篇

在上一篇中有提到 section header 是給連結器看的資訊,那連結器又是什麼呢?連結器主要有兩個功能: 合併靜態函式庫與目的檔 (object fil...

2019-09-30 ‧ 由 DanSnow 分享
DAY 12

panic - 概念篇

Rust 的 panic 其實是個有趣的機制,怎麼說呢,我們來看個範例程式,請試著自己先在腦中模擬一下這段程式會印出什麼: use std::panic; s...

2019-10-01 ‧ 由 DanSnow 分享
DAY 12

panic - 內部實作編

這篇要來看 panic 實際上是怎麼實作的,在那之前,先來介紹一個工具吧 - cargo-expand ,它可以用來幫我們看 macro 實際展開來長什麼樣子,...

2019-10-02 ‧ 由 DanSnow 分享
DAY 12

panic - 編譯器篇

這篇要來看在 panic ,或是例外處理的過程中,編譯器幫了什麼忙,上一篇程式碼的部份最後還剩下 find_eh_action 的內容沒講,因為它是在讀由編譯器...

2019-10-03 ‧ 由 DanSnow 分享
DAY 12

unwind 與 backtrace

是說在之前介紹到的 libunwind ,因為它有讀取 frame 資訊的功能,實際上還有個很有用的用途,顯示 backtrace ,另外在 Rust 發生 p...

2019-10-04 ‧ 由 DanSnow 分享
DAY 12

手動載入執行檔

這次的程式碼在 https://github.com/DanSnow/ironman-2019/tree/master/elf-load 之前說過要用 go...

2019-10-05 ‧ 由 DanSnow 分享