2012-07-31 64 views
2

在OS X Lion下工作時,我已經做了一些代碼注入的工作,最近逐個進程地處理系統調用。OS X系統調用是否可以覆蓋或插入系統範圍內?

我學到了很多,一路走來,現在它看起來會更有意義,爲研究目的,至少,以「簡單地」干預所有調用某些系統功能,如pwrite,如果這樣的事情是可能的。

是否有可能被調用,而不是從過程中,OS爲調用某些系統調用(例如pwrite)我的代碼?

如果是這樣,我可以知道什麼過程已經打了電話嗎?

編輯:爲了避免有人認爲我是因爲我的問題的性質惡意軟件作者,我會解釋爲什麼我現在在這裏,問我要問:

我試圖獲得一個大而複雜的閉源軟件,它應該像這樣工作。爲什麼不等待供應商解決它?兩年前,他們開始將手指指向另一方,該黨指出對方。情況是荒謬的,值得在沒有任何一方的幫助下克服,因爲這個軟件被電影和視頻製作人員使用,他們每小時收取數百美元的創造性和技術先進的努力,而且不應該浪費他們的時間摔跤他們的工具。

到目前爲止,我的努力的問題是我需要使用代碼注入和插入來找到問題的來源(這是我以上稱爲「研究」)。一旦發現問題的根源,解決方案可能還包括注入和插入,或者更換動態庫,或者一些模糊的低級系統調優,或者誰知道什麼?我正在分析的軟件非常龐大,它反過來利用了其他框架,庫和後臺任務,其中一些是OS X的一部分,其中一些是有問題的軟件包的一部分。代碼注入和逐個組件的插入已經變得有點瘋狂了,這就是爲什麼我想在的系統調用結束時監視上發生了什麼,所以我可以看到,例如,哪裏所有pwrite呼叫都來自呼叫的細節。

我希望這個澄清有所幫助,而且有人可以指出我正確的方向。謝謝!

+0

* [長篇論壇被刪除] * – 2012-07-31 22:52:14

+0

作爲對您編輯的迴應 - 這是一個公共論壇,您正試圖將技術嫺熟和經驗豐富的開發人員提供給您關於您承認兩個供應商之間已經存在爭議的主題的建議。我不想去那裏,SO上的其他人也不應該去。 – 2012-07-31 22:53:25

+1

@MartinJames:可惜的是,雖然Windows非常容易接受堆棧的過濾器驅動程序_(正如許多病毒掃描程序所使用的那樣),但OS X並不支持這個概念。 – bland328 2012-07-31 22:54:08

回答

0

你應該看看DTrace:http://en.wikipedia.org/wiki/DTrace它現在是OS X的一部分。爲了介入,我認爲有幾種方法,其中許多方法可能會被關守/代碼簽名激怒。如果這不是一個擔心,那麼您可能可以使用otool編輯應用程序鏈接,讓它載入其庫的修改版本。對於代碼注入,我相信人們在過去使用輸入組件侵入了這一點...但我真的不知道這是否仍然有效。我猜不是一個真正的答案。

+0

非常感謝DTrace的建議。幾周前我得到了一些非常不錯的結果,但最終因爲D語言的侷限性而停止使用它,特別是在流量控制領域。鑑於我現在選擇的選項很少,我很欣賞提醒,並且認爲我會再試一次。 – bland328 2012-07-31 23:23:10

+0

此外,爲了記錄,[Inject and Interpose](https://github.com/comex/inject_and_interpose)項目對於整理注入和插入非常有用! – bland328 2012-07-31 23:29:02