動態so庫修改方法

2021-10-06 17:18:14 字數 1177 閱讀 7177

​ 對於linux和android開發者,有時可能需要檢視或者修改.so檔案,下面來講述如何檢視或者修改so檔案。

ida pro:

010 editor:

注意安裝完ida後通常會生成兩個快捷圖示32位和64位,這個是對應於so的,如果so是32位的,則開啟32位的32位的快捷圖示

開啟之後,載入so,通常可以直接識別到so的資訊,如果不能識別或者識別有誤,可以手動選擇,如圖所示:

​ 圖1:載入so檔案介面

進入之後,可以看到的介面如圖2所示,在軟體選單欄下面,軟體用不同的顏色標註除了so的資訊,並且在資訊條的下方有對應的說明。

圖2:主介面

​ 在左側的函式視窗(function window)的函式名稱(function name)中找到.text段,然後找到需要檢視的函式,雙擊即可開啟。開啟後反編譯出來的組合語言(ida view-a)看起來比較費勁,可以按f5轉成偽**(pseudocade-a視窗)。

​ 開啟並找到需要修改的**之後,然後在對應的ida view-a檢視中找到對應的彙編**,注意如果找不到或者關閉了ida view-a檢視,可以重新開啟軟體。

找到對應的**之後,滑鼠右鍵選擇 文字檢視,可以看到該條指令的具體位置,記住這個位置

使用010 editor修改.so檔案開啟so檔案,然後找到剛才記錄的需要修改的陣列的位置,直接修改其數值。

如果需要修改彙編指令,不知道怎麼改的話,可以使用彙編轉16進製製碼的工具arm_asm。

so檔案動態替換方法及Linux動態庫的用法

在替換so檔案時,如果在不停程式的情況下,直接用 cp new.so old.so 的方式替換程式使用的動態庫檔案會導致正在執行中的程式崩潰。解決的辦法是採用 rm cp 或 mv cp 來替代直接 cp 的操作方法。linux系統的動態庫有兩種使用方法 執行時動態鏈結庫,動態載入庫並在程式控制之下...

Linux 動態庫 so 使用

折騰了會 dll 覺得不爽,改玩 so 去 一.編寫個c檔案 test.c include file test.c int say int add int x,int y 二.編譯成動態庫 so gcc shared o test.so test.c usr lib gcc x86 64 pc li...

動態庫 so 函式呼叫

最近剛剛換工作,第一次接觸到要從.so動態庫檔案裡呼叫函式。目前只得到.so庫檔案和封裝的各類函式介面。在網上搜了一些,然後根據自己的 做了整理。首先,理解動態庫,linux中的.so檔案類似於windows中的dll,是動態鏈結庫。當多個程式使用同乙個動態鏈結庫時,既能節約可執行檔案的大小,也能減...