4

我想在 .net 可执行文件(我无权访问源代码的第三方可执行文件)中拦截 CLR 函数调用以进行调试。我一直在研究一些挂钩 api(deviare、easyhook、mhook)等,但我认为它们只支持挂钩到 dll 中的简单函数,例如 xxx.dll!functionname,并且不能记录对对象的构造函数调用等。我想要知道它们是否是能够轻松记录.net 可执行文件中的函数调用的任何库,例如如果一个进程调用该函数,File.ReadAllText(@"C:\name.txt");我将使用参数 c:\name.txt 记录函数 File.ReadAllText。

以下是一些我尝试过/看过但没有做我想做的事情。

偏差

姆胡克

易钩

微软痣

Redgate Ants Profiler(这个非常接近。它记录所有 clr 函数调用,我只需要它来记录参数。如果你知道这将如何解决我的问题)

4

2 回答 2

1

如果它是 .net 可执行文件并且您拥有修改它的合法权利,您可以使用带有修改插件的反射器来更改源代码中的任何内容并重新编译它。

于 2013-04-04T02:50:50.587 回答
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 挂钩。这是我们的计划,但我们没有时间实施。

于 2013-04-04T14:21:52.357 回答