我想拦截一个.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函数的调用,我只需要它来记录如果你知道这将如何解决我的问题)
好问题。可能不是微不足道的,但如果你的第三方EXE没有签名,你应该能够用ildasm反汇编它,以某种方式用日志记录调用源代码,然后用ilasm重新组装。 – 2013-04-03 21:05:05
你看过[Castle DynamicProxy](http://www.castleproject.org/projects/dynamicproxy/)吗? – Romoku 2013-04-03 21:06:21
谢谢。我正在看DynamicProxy,看起来我需要访问源代码。我更新了我的问题,以表明它是没有src访问权限的第三方可执行文件。 – james123 2013-04-03 21:20:06