2013-04-03 29 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