2010-07-12 86 views
2

是否可以在不獲取源代碼的情況下修改Linux中的共享庫(.so)?在Linux中修改共享庫

我知道LD_PRELOAD,但是對於在共享庫本身中使用的函數有用麼?

有沒有反編譯/反彙編,然後重新編譯/重組二進制ELF文件的方法?

+0

不容易,沒有。什麼庫?你想改變什麼? – Rup 2010-07-12 09:08:04

+0

一個webkit共享庫;) 共享庫是webkit的專有構建,但它使用大部分相同的開源函數。 我想要做的是修改一個內部函數。該功能用於在屏幕上呈現文字。我想在發送給framebuffer之前修改文本(用於BiDi)。我可以從開源repo構建相同的庫並添加這些修改,但由於它是專有的(這意味着它具有UNopensource修改),我可以進一步看到的唯一方法是二進制修補(如果它支持它,則爲LD_PRELOAD)。 – UAE 2010-07-13 12:55:27

+0

順便說一句,rendertext函數只能在庫中調用,不能從外部調用。 – UAE 2010-07-13 12:55:55

回答

1

即使擁有所有可用的文檔,代碼和支持,修改應用程序也很困難。試圖以二進制形式修改應用程序(大概)沒有調試符號,因此沒有文檔(根據您沒有代碼的事實來判斷)因此是一項艱鉅且冒險的工作。

應用程序逆向工程很困難,但可以在給予足夠資源,決心,工具和知識的情況下完成:所有這些都取決於具有足夠有價值的目標。