got,plt表學習記錄

2021-08-16 12:12:45 字數 1388 閱讀 9548

#include 

#include

int main(int argc,argv** argv)

以下兩步分別用pwntools和objdump檢視got表和plt表

用pwntools獲取got表和plt表

>>>from pwn import*

>>>elf=elf("a.out")

>>>print

"0x"+"%x" %elf.symbols['printf']

0x80482e0

>>>

print

"0x"+"%x" %elf.got['printf']

0x804a00c

再使用objdump

>>>objdump -d -j .plt a.out

080482e0 :

80482e0: ff 25

0c a0 04

08 jmp *0x804a00c

80482e6: 68

0000

0000 push $0x0

80482eb: e9 e0 ff ff ff jmp 80482d0 <_init+0x24>

>>> objdump -r a.out

0804a00c r_386_jump_slot printf@glibc_2.0

用gdb-peda檢視main函式中反彙編結果

call   0x80482e0

@plt>

對反彙編printf的plf錶值

gdb-peda$ pdisass 0x80482e0

0x080482e0

@plt+0>: jmp dword ptr ds:0x804a00c

0x080482e6

@plt+6>: push

0x00x080482eb

@plt+11>: jmp 0x80482d0

上面的0x804a00c為printf的got錶值

gdb-peda$ xinfo 0x804a00c

0x804a00c --> 0x80482e6 (@plt+6>: push

0x0)

當我們執行完一次printf後

gdb-peda$ xinfo 0x804a00c

0x804a00c --> 0xb7e52670 (<__printf>: call 0xb7f28b09

<__x86.get_pc_thunk.ax>)

學習記錄 ST表

st 表是用於解決可重複貢獻問題的資料結構 可重複貢獻問題 是指對於運算 opt 滿足 x opt x x 則對應的區間詢問就是乙個可重複貢獻問題。摘自oi wiki 說人話,就是對區間的重複運算不影響結果。比如區間最值問題 rmq 區間gcd 比方10個數求最大值,先對前7個數求最值,再對後6個數...

C學習記錄6 6表查詢

np next hashtab hashval hashtab hashval np c程式語言6.6表查詢裡面install函式中對鍊錶的操作,表頭用h表示,鍊錶變化順序是 h np1 h np2 np1,h np3 np2 np1,h np4 np3 np2 np1,即最新加入鍊錶的表項在表頭。...

oracle學習記錄之擴充套件表空間

oracle學習記錄,擴充套件表空間,主要思想 1 增加表空間的資料檔案 2 修改資料檔案的大小,同時可讓資料檔案自動擴充套件。擴充套件表空間之方法1 使用em control,資料庫例項主頁,server選項卡,storage標題,tablespace,增加資料檔案或重定義大小及指定自動擴充套件。...