ubuntu遇到的問題與棧溢位學習

2021-09-29 19:11:52 字數 1321 閱讀 4076

1.make無法安裝:

2.安裝軟體包時遇到簽名無效,明文簽署檔案不可用等問題,進行源更新:

3.make 出現pip8.1.1 requires ssl/tls:

安裝openssl-devel

yum install opensll-devel

apt-get install libssl-dev

apt-get install openssl

4.安裝pip3源更新問題:

5.更新pip3卻顯示異常,出現importerror: cannot import name main:

6.gcc編譯程式:

7.關閉aslr時,出現許可權不夠問題:

8.gcc生成關閉aslr關閉pie並不生成cnanary命令:

gcc -fno-stack-protector -o newfile file -no-pie

8.64位編譯32位開啟多架構支援:

1.pwntools安裝,與模組介紹:

2.ida

3.gdb安裝相關:

gef外掛程式安裝:

setvbuf全緩衝,行緩衝,不帶緩衝:

1.區分暫存器:

%eax、%edx和%ecx為主調函式儲存暫存器

%ebx、%esi和%edi為被調函式儲存暫存器

esp(stack pointer)是堆疊指標暫存器,存放執行函式對應棧幀的棧頂位址(也是系統棧的頂部),且始終指向棧頂;

ebp(base pointer)是棧幀基址指標暫存器,存放執行函式對應棧幀的棧底位址,用於c執行庫訪問棧中的區域性變數和引數。

eip(instruction pointer)是指令暫存器,指向處理器下條等待執行的指令位址(**段內的偏移量),每次執行完相應彙編指令eip值就會增加。

2.理解棧在函式呼叫時的變化過程:

3.指令

add esp,*** 降低棧頂,**當前的棧幀

pop ebp 將上乙個棧幀底部位置恢復到ebp

retn 這條指令有兩個功能 a)彈出當前棧頂元素,即彈出棧幀中的返回位址至此,棧幀恢復工作完成 b)讓處理器跳轉到彈出的返回位址,恢復呼叫前的**區

區分 mov %esp,%ebp與 mov %ebp,%esp

前者為開闢新棧幀,後者為釋放棧空間

4.main中呼叫func_a,func_a中再呼叫func_b的函式呼叫實現

Ubuntu 遇到的問題

如果是root許可權,可以 wq 強行儲存退出 如果提示唯讀,用sudo執行 即sudo vi etc resolv.conf,然後執行完重啟系統解決 按esc鍵 跳到命令模式,然後 w 儲存檔案但不退出vi w file 將修改另外儲存到file中,不退出vi w 強制儲存,不推出vi wq 儲存...

棧溢位問題分析

近日,程式總是莫名其妙的coredump,而且還是在變數定義的時候 如 int a 1 百思不得其解。在這種情況下,只有幾種情況可能出現 記憶體踩踏 棧溢位。在經過長時間的分析確認,肯定不是記憶體踩踏。剩下的就是棧溢位了。linux下一般單個程式棧大小為10m,可用ulimit s查閱。一般情況下,...

段錯誤與棧溢位

編譯後產生的可執行檔案裡儲存著什麼內容 和作業系統相關 在可執行檔案中,正文段 text segment 儲存指令,資料段 data segment 儲存已初始化的全域性變數,bss bss segment 儲存未賦值的全域性變數所需的空間。呼叫棧並不儲存在可執行檔案中,而是在執行時建立,呼叫棧所在...