2013-04-03 60 views
3

我想攔截一個.net可執行文件(第三方可執行文件,我無法訪問源代碼)中的CLR函數調用以進行調試。我一直在尋找一些hooking apis(deviare,easyhook,mhook)等,但我認爲他們只支持鉤入簡單的函數,如xxx.dll!函數名,而不能記錄構造函數調用對象等我想要知道他們是否有能夠在.net可執行文件中輕鬆記錄函數調用的任何庫,例如,如果進程調用函數File.ReadAllText(@"C:\name.txt");,我將使用參數c:\ name.txt記錄函數File.ReadAllText。如何攔截/覆蓋.net可執行文件中的函數調用?

這裏有一些事情我已經試過/看過但沒有做我想做的事情。

Deviare

Mhook

EasyHooks

微軟痣

展鵬螞蟻探查器(這一次是真的很近。它記錄所有的CLR函數的調用,我只需要它來記錄如果你知道這將如何解決我的問題)

+0

好問題。可能不是微不足道的,但如果你的第三方EXE沒有簽名,你應該能夠用ildasm反彙編它,以某種方式用日誌記錄調用源代碼,然後用ilasm重新組裝。 – 2013-04-03 21:05:05

+0

你看過[Castle DynamicProxy](http://www.castleproject.org/projects/dynamicproxy/)嗎? – Romoku 2013-04-03 21:06:21

+0

謝謝。我正在看DynamicProxy,看起來我需要訪問源代碼。我更新了我的問題,以表明它是沒有src訪問權限的第三方可執行文件。 – james123 2013-04-03 21:20:06

回答

1

如果它是.net可執行文件,並且您有修改它的合法權限,則可以使用修改插件的反射器來更改源代碼中的任何內容並重新編譯它。

+0

這是怎麼完成的? – Default 2013-04-04 14:39:03

+0

謝謝。這工作。我使用的修改插件是Reflixil。 – james123 2013-04-08 12:39:49

1

Deviare支持按地址掛鉤。你可以看到這篇文章: http://blog.nektra.com/main/2013/03/27/how-to-identify-virtual-table-functions-with-the-vtbl-ida-pro-plugin/

在那裏,我們已經做了一個過程的完整的虛函數表鉤子沒有源代碼或PDF,RTTI任何其他信息源等,等

在未來,我們將增加.NET掛鉤。這是我們的計劃,但我們沒有時間去實施它。

+0

有趣。任何想法時,將添加.NET掛鉤(時間框架)? – james123 2013-04-04 15:33:53

+0

它在隊列中的下一個,但它取決於空閒時間。我們喜歡代碼Deviare,但我們的收入來自服務。 – 2013-04-09 15:32:37