可以動態的將一個shared library載入到程式中.
在Unix or Unix like的系統中, 可以使用LD_PRELOAD這個環境變數, 可以將而外的library載入到程式. 而且lirary的function可以覆蓋既有library的function.
例如 :
我們自己寫一個 malloc.so 這個一library, 裡面有一個我們自己寫的malloc()
然後執行
LD_PRELOAD="./malloc.so" test_prog
在test_prog裡, 所有的malloc都不再是呼叫系統標準library的malloc, 而是呼叫malloc.so
這樣, 可以讓我們方便再不重新compiler 程式的情況下, 做特定function的debug, test等.
當然, 這個工具也有另外的用途, 就是用來做Reverse Engineering (逆向工程).
有興趣的人可以參考下面的文章 : Reverse Engineering with LD_PRELOAD
沒有留言:
張貼留言