假设您有一个A
包含一堆非常标准的非混淆类的程序集。
有没有办法以编程方式创建某种“模拟”程序集,该程序集B
将包含程序集中的A
所有方法,但程序集 B 中的所有这些方法都应该在方法的开头和最后注入用户代码,以便当B
我们执行程序集时,它将正常运行+执行注入的用户代码。注入的代码将用于分析目的。是否有可能以某种方式完成(我已经在使用 ANTS 分析器,所以不需要任何分析工具,我只是对是否有可能以指定的方式解决问题感兴趣)
谢谢!
编辑
伙计们,我正在谈论编写一个单独的应用程序(类似于http://codeinject.codeplex.com/),该应用程序能够将任何 .net 程序集作为输入并生成另一个程序集,其中将包含:
- 第一个的所有代码
- 注入到程序集的每个方法中的特殊用户代码......好吧,被“嘲笑”
假设我们有以下代码:
程序集A.dll:
class Test
{
void Action1(int someArgument)
{
...
}
void Action2(bool someBool)
{
...
}
public void DoSomeAction()
{
Action1(123);
...
Action2(true)
}
}
注入器.dll:
public class Injector: IInjector
{
Dictionary<String, Int32> profiler = new Dictionary<String, Int32>();
void BeforeInvoke(IMethodCall call)
{
Console.WriteLine("A method {0} being called", call.Method.Name);
}
void AfterInvoke(IMethodCall call)
{
Console.WriteLine("A method {0} was called, duration {1}", call.Method.Name, call.Duration);
}
}
它将允许执行以下操作:
> inject.exe AssemblyA.dll Injector.dll AssemblyB.dll
现在,当您引用 AssemblyB.dll 并在生产环境中使用时,它会执行 AssemblyA.dll 所做的所有事情,但它还会执行一些性能日志记录,以便以后以更类似于开发的方式查看和分析。
我的问题:
我应该从哪里开始寻找?