GOT表覆寫技術

2021-08-17 10:05:43 字數 514 閱讀 9322

概念:每乙個外部定義的符號在全域性偏移表(global offset table)中有相應的條目,got位於elf的資料段中,叫做got段。

作用:把位置無關的位址計算重定位到乙個絕對位址。程式首次呼叫某個庫函式時,執行時連線編輯器(rtld)找到相應的符號,並將它重定位到got之後每次呼叫這個函式都會將控制權直接轉向那個位置,而不再呼叫rtld。

plt表:

過程連線表(procedure linkage table),乙個plt條目對應乙個got條目

當main()函式開始,會請求plt中這個函式的對應got位址,如果第一次呼叫那麼got會重定位到plt,並向棧中壓入乙個偏移,程式的執行回到_init()函式,rtld得以呼叫就可以定位printf的符號位址,第二次執行程式再次呼叫這個函式時程式跳入plt,對應的got入口點就是真實的函式入口位址。

動態聯結器並不會把動態庫函式在編譯的時候就包含到elf檔案中,僅僅是在這個elf被載入的時候,才會把那些動態函庫數**載入進來,之前系統只會在elf檔案中的got中保留乙個呼叫位址.

PLT表和GOT表學習

我們用乙個非常簡單的例子來講解,如下 圖1 然後我們編譯 我們直接 gdb.a.out 來進行反編譯處理,然後通過disas main檢視main函式中的反編譯 如下 圖3 我們可以觀察到 gets plt 和 puts plt 這兩個函式,為什麼後面加了個 plt 因為這個為 plt 表中的資料的...

覆寫 重寫(override)

如果子類定義了與父類完全相同 不算許可權 的方法或者屬性的時候,這種操作就稱為覆寫。子類定義了與父類方法名稱,引數列表,方法返回值完全相同的方法。子類不能擁有比父類更嚴格的訪問控制許可權。並且不能出現private關鍵字 判斷呼叫的是父類方法還是子類方法 a.看new 在哪 當前使用的物件是通過哪個...

Java覆寫詳解

覆寫 如果子類定義了與父類相同的屬性或方法,這個操作就稱為覆寫 方法的覆寫 子類定義了與父類方法名稱,引數型別,及個數完全相同的方法,但是覆寫不能有比父類更嚴格的訪問控制許可權 觀察簡單覆寫 package testoverride author weiwei description 簡單的覆寫 c...