首頁>Club>
6
回覆列表
  • 1 # 使用者716499504344968

    如果問題是畢現的,就非常容易解決。你這裡是段錯誤,不是棧溢位。一般只有深層遞迴或者大的區域性變數才會有棧溢位。根據你的描述,eip被踩掉的可能比較大。另外sigsegv時,檢視寫入的非法地址和寫入的值是什麼也很關鍵。其他的一些建議,可以參考一下:

    1. 所有的編譯警告都開啟。

    2. 檢查一下calltrace,函式呼叫合乎邏輯,可以初步判斷eip是否被踩寫。

    3. 嘗試所有的不安全的記憶體操作strcpy, sprintf, memcpy,改用strncpy等安全版本替換。

    4. 檢查所有的暫存器值是否是合法地址,嘗試將它們指向的地址附近的記憶體dump出來,看是否有熟悉的結構或者字串。

    5. 檢查pack位元組對齊是否一致,特別是用到第三方庫的情況。

    6. 是否有整數溢位,signed/unsigned是否有不安全的混用。...

  • 中秋節和大豐收的關聯?
  • 獨立基礎與地梁的連線是怎麼連線的?