Linux hook內核函數

在內核中,如果要hook某個函數,只要把函數開頭的5個字節替換成call/jmp指令.

步驟

1. 保存orig 函數的前5個字節指令.

2.定義一個stub函數,用於跳轉回orig函數.

3.在新函數中,調用stub函數.

 

具體實現

給函數插入指令
  掃描函數所有的指令序列
  校準針對函數外部的相對尋址的指令(call/jmp),使其操作數減去函數搬移的偏移值
   offset = function_A - stub_B + offset

注意事項:

1. 如果不使用text_poke接口,需要手動對ip_rcv的內存進行重新映射,讓內存變爲可寫,或者直接禁止CR0寫保護

2. stub函數和orig function需要在2G範圍內。

3.如果時給內核函數插入指令,需要校準相對偏移
    校準針對函數外部的相對尋址的指令(call/jmp),使其操作數減去函數搬移的偏移值
   offset_B = function_A - stub_B + offset_A

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章