[英]Shared Library (.so) file on hard drive changes when user processed killed
這是我之前的問題的延續。
我開發了一個庫並將其鏈接到我的進程。 每次我將它與我的進程鏈接時,我的庫應該具有相同的哈希值(從安裝時間開始)。 在進行任何其他操作之前,我的進程始終檢查庫的哈希值。 我的進程是一個守護進程,它在initrd中使用腳本啟動和停止。 我總是通過“kill -9 myproc”命令殺死我的進程,該命令發送SIGKILL進行處理並強制終止進程。
但是當我停止並重新啟動我的進程時,有時我的共享庫文件的哈希值會發生變化。 它發生在隨機時間,最近它發生得更頻繁,由於我在其中編碼的哈希比較條件,我的進程無法啟動。
我已經轉儲了兩個共享庫,即安裝后和更改后的版本。 我用“objdump -d libmy.so”來轉儲。 這是兩個轉儲的“差異”屏幕截圖(黃色是原始文件,紅色是更改版本):
我不太了解elf文件內容,但看起來原始文件只有偏移量,更改文件有完整的指令和功能地址。 因此,庫的更改版本比原始版本大2kb。
為什么會這樣? 是否與強制進程關閉的SIGKILL信號有關? 如果沒有,可能是什么原因?
任何幫助,將不勝感激。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.