![](/img/trans.png)
[英]Symbol interposition on macOS
我有一個鏈接到共享庫libfoo的程序。 我想在我的程序中覆蓋來自 libfoo 的函數之一,以便從libfoo中對該libfoo的內部調用解析為我程序中的定義。 (對於上下文,我的意圖是模擬庫 function 進行測試。) 這個問題與這個問題有點相關: 共享庫中的符號查找。 這是該問題的示例: ...
[英]Symbol interposition on macOS
我有一個鏈接到共享庫libfoo的程序。 我想在我的程序中覆蓋來自 libfoo 的函數之一,以便從libfoo中對該libfoo的內部調用解析為我程序中的定義。 (對於上下文,我的意圖是模擬庫 function 進行測試。) 這個問題與這個問題有點相關: 共享庫中的符號查找。 這是該問題的示例: ...
[英]Library interpositioning
按照我們的教科書(CSAPP book),我一直在嘗試攔截對 malloc 和免費的調用。 我遵循了他們的確切代碼,以及我在網上找到的幾乎相同的代碼,但我一直遇到分段錯誤。 I heard our professor saying something about printf that mallo ...
[英]How can I debug runtime library interpositioned process?
我現在正在研究 Ubuntu 18.04 中使用 C 的庫插入,我正在測試兩個簡單的代碼來包裝strlen :“mystrlen.c”、“mystrlenTest.c”。 這是我寫的代碼:mystrlen.c 和 mystrlenTest.c: 我嘗試在運行時使用以下命令注入: 這就是我得到的全部 ...
[英]Interpositioning fscanf only under certain conditions
因此,我試圖覆蓋c中的fscanf函數,但我只希望在滿足某些條件的情況下發生不同的行為。 如果不滿足這些條件,我只想調用原始的fscanf。 我知道您可以在插入函數時使用dlsym使用函數的原始版本,但是fscanf的問題是可變參數。 我可以使用va_list和va_arg將所有參數傳遞到 ...
[英]ptrace(PTRACE_ATTACH, pid, 0, 0) error: cannot atttach to pid
我試圖使用PTRACE在android中注入一個庫,但是當我嘗試將ptrace附加到特定的pid進行監視時出現錯誤/; “無法附加到pid” ...這是代碼 我想知道為什么ptrace()返回的值小於零,從而導致錯誤.... ptrace()函數應返回什么才能正常執行(無錯誤) ...
[英]symbol lookup in shared libraries
我已經在下面測試了這樣一個簡單的程序 我的主程序是這樣的: 程序的結果為“覆蓋”。 為了弄清楚為什么會發生這種情況,我使用了gdb。 調用鏈如下所示: _dl_runtime_resolve -> _dl_fixup ->_dl_lookup_symbol_x ...
[英]How to hook system calls of my android app
我想攔截connect()系統調用並使用自己的自定義實現。 定制實現將執行某些操作,例如為簡單起見打印日志,然后進一步調用系統實現。 我看了Audrey的博客 ,其中介紹了修補PLT的方法。 但是不幸的是,當嘗試更改重定位表中的地址時,此代碼崩潰。 閑逛了一會兒后,我遇到了這個已 ...
[英]How to hook system calls of my android app (non rooted device)
我試圖攔截我的Android應用程序在非root設備上進行的所有系統調用。 因此,每次我的應用程序寫入/讀取文件時,我都會攔截系統調用並加密/解密流以用於安全目的。 加密部分沒問題,但我如何攔截系統調用? 由於應用程序的某些部分是由第三方提供商開發的模塊,我無法更改源代碼,因此沒有 ...
[英]Interposing of OS X system calls
我需要插入(調用我的函數而不是原始函數)一些OS X系統調用來克服一個閉源軟件中的缺陷。 最好,得到的解決方案可以在10.5(Leopard)和更新的情況下工作,但如果論證足夠強大,我可能需要10.6(Snow Leopard)。 最好,得到的解決方案是可執行的,但我可能會選擇一個腳 ...
[英]Cleaning up function interposition with dlsym
作為malloc包裝器,我使用以下經典代碼段: Valgrind很難過,因為在程序結束時仍有dlsym分配的緩沖區。 如何釋放這些資源? 謝謝 ...
[英]How to dynamically interpose C functions from Python on Linux (without LD_PRELOAD)?
我如何在運行時(沒有LD_PRELOAD )攔截/掛鈎像Linux上的fopen()這樣的C函數,一個適合Windows的Detours? 我想從Python中做到這一點(因此,我假設該程序已經在運行CPython VM)並且還要重新路由到Python代碼。 我只是掛鈎共享庫函數。 我也想 ...
[英]Find out if a received pointer is a string, ushort or array
我在C中插入memcpy()函數,因為目標應用程序使用它來連接字符串,並且我想找出正在創建的字符串。 代碼是: 該函數被成功調用,但是第一個參數可以是任意值,並且如果結果是字符串或數組,我只想跟蹤它。 我將不得不問它是數組還是字符串。 我知道這不能簡單地完成:無論如何,有沒有找出R ...
[英]LD_PRELOAD for C++ class methods
我需要在C ++程序中插入一個方法調用(該類駐留在一個單獨的共享庫中)。 我以為我可以使用LD_PRELOAD,但我不確定這是如何工作的(我只找到C函數的例子):有沒有辦法為單個方法設置插入而不從插入的類實現復制任何代碼? ...
[英]Interposing library: XOpenDisplay
我正在一個項目中,我需要更改X11 / Xlib.h中定義的XOpenDisplay函數的行為。 我找到了一個示例 ,它應該可以完全滿足我的要求,但是在編譯該示例時,出現以下錯誤消息: XOpenDisplay_interpose.c:14:錯誤:»XOpenDisplay«的類 ...
[英]Problem replacing Linux system calls using LD_PRELOAD
我正在嘗試編寫一個程序,該程序允許運行二進制文件,並在被另一個文件請求時替換一個文件。 它是一個簡單替換系統調用函數的庫,與LD_PRELOAD一起使用。 問題是它捕獲了要讀取的打開文件(而是讀取了替代文件),但是寫入操作始終返回到實際的指定文件。 我應該知道其他的“開放式”系統調用嗎? ...
[英]memory-mapped files in C
我在玩C語言中的內存映射文件,想知道是否有辦法透明地用內存映射文件替換fopen中的FILE *。 例: 但是相反,可能有FILE * fp = my_fopen(...) 在我自己的函數會打開磁盤上的文件的位置,可能會更改內容,然后將文件*傳遞回去,而程序不會看到任何與眾不 ...