library-interposition

    0熱度

    4回答

    我在C中插入memcpy()函數,因爲目標應用程序使用它來連接字符串,並且我想找出正在創建的字符串。該代碼是: void * my_memcpy (void * destination, const void * source, size_t num) { void *ret = memcpy(destination, source, num); // printf ("[M

    1熱度

    1回答

    我想在Android中使用PTRACE注入庫,但是當我嘗試將ptrace附加到特定的pid以進行監視時出現錯誤/; 「無法連接到PID」 ...... 這裏是我想知道爲什麼ptrace的()將返回值小於零,導致錯誤的代碼 // Attach if (0 > ptrace(PTRACE_ATTACH, pid, 0, 0)) { printf("cannot attach to

    1熱度

    1回答

    爲了能夠使用inject_and_interpose代碼進行一些注入和插入,我需要在實際執行之前獲取新啓動的進程(典型的閉源用戶應用程序)的PID。要清楚,我需要做的比只是「注意到它快」 - 我不能輪詢,或接收到一些異步通知,這意味着該進程已經執行了幾毫秒的時間我採取行動。 我需要有機會在執行單個語句之前執行注入和插入操作。 我打算編寫一個後臺進程,當一個特定名稱的進程出現時,會同步通知後臺進程。

    2熱度

    1回答

    在OS X Lion下工作時,我已經做了一些代碼注入的工作,最近逐個進程地處理系統調用。 我學到了很多,一路走來,現在它看起來會更有意義,爲研究目的,至少,以「簡單地」干預所有調用某些系統功能,如pwrite,如果這樣的事情是可能的。 是否有可能被調用,而不是從每過程中,OS爲每調用某些系統調用(例如pwrite)我的代碼? 如果是這樣,我可以知道什麼過程已經打了電話嗎? 編輯:爲了避免有人認爲我

    0熱度

    1回答

    我想攔截connect()系統調用並使用我自己的自定義實現。自定義實現將執行一些操作,如打印日誌以簡化操作,然後進一步調用系統實現。 我看着Audrey's blog其中的方法是修補PLT。但不幸的是,當嘗試更改重定位表中的地址時,此代碼崩潰。 經過一段時間的護目鏡後,我碰到This already answered question。但是這裏描述的方法給了我以下錯誤。 *****跳轉到case標

    0熱度

    1回答

    我正在研究一個項目,我需要更改X11/Xlib.h中定義的XOpenDisplay函數的行爲。 我發現了一個example,它應該做的正是我期待的,但是當我編譯它,我收到以下錯誤信息: XOpenDisplay_interpose.c:14: Error: conflicting types for »XOpenDisplay« /usr/include/X11/Xlib.h:1507: Erro

    0熱度

    1回答

    所以我試圖覆蓋c中的fscanf函數,但我只想要在滿足某些條件時發生不同的行爲;如果這些條件沒有得到滿足,我只想調用原始的fscanf。我知道你可以在插入它時使用dlsym來使用函數的原始版本,但是fscanf的問題在於它是可變的。我可以使用va_list和va_arg獲取所有傳入我的函數的參數,但是如果我實際上不知道有多少個參數,我該如何在這些參數上調用原始fscanf?

    5熱度

    2回答

    我需要在C++程序中調用方法調用(該類駐留在單獨的共享庫中)。我以爲我可以使用LD_PRELOAD,但我不知道這將如何工作(我只發現C函數的例子):有沒有一種方法來設置單個方法的插入,而不需要複製插入的類實現中的任何代碼?