#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,增加資料檔案或重定義大小及指定自動擴充套件。...