我想拦截.net可执行文件中的CLR函数调用(我无法访问源代码的第三方可执行文件)以进行调试。我一直在寻找一些钩子api(deviare,easyhook,mhook)等但我认为他们只支持挂入dll中的简单函数,如xxx.dll!functionname,并且无法在对象上记录构造函数调用等。我想要知道它们是否是能够在.net可执行文件中轻松记录函数调用的任何库,例如,如果进程调用函数File.ReadAllText(@"C:\name.txt");
,我将使用参数c:\ name.txt记录函数File.ReadAllText 。
以下是我尝试/看过的一些事情,但没有做我想要的事情。
Deviare
Mhook
EasyHooks
Microsoft Moles
Redgate Ants Profiler(这个非常接近。它会记录所有clr函数调用,我只需要它来记录参数。如果你知道这将如何解决我的问题) < / p>
答案 0 :(得分:1)
如果它是.net可执行文件并且您拥有修改它的合法权限,则可以使用带有修改插件的反射器来更改源代码中的任何内容并重新编译它。
答案 1 :(得分:1)
Deviare支持通过地址挂钩。你可以看到这篇文章: http://blog.nektra.com/main/2013/03/27/how-to-identify-virtual-table-functions-with-the-vtbl-ida-pro-plugin/
我们已经完成了没有源代码或任何其他信息源(如PDF,RTTI等)的流程的完整vtable挂钩。
将来我们将添加.NET挂钩。这是我们的计划,但我们没有时间实施它。