Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何注入.NET代码来更改函数的返回值_.net_Code Injection - Fatal编程技术网

如何注入.NET代码来更改函数的返回值

如何注入.NET代码来更改函数的返回值,.net,code-injection,.net,Code Injection,我目前正在研究如何编写可以注入另一个.NET进程并重写函数返回值的.NET代码。我的想法是,我的代码会改变方法调用的返回值,如下所示: Public Function DoSomething() As String Return "Value" End Function 我的代码将拦截对DoSomething的调用,并返回我自己的自定义字符串,而不是值 我猜我需要使用.NET评测API来做这类事情。是否有人有使用评测API的经验,如果有,您认为这种代码注入是可能的 我不打算用它来做任何恶意

我目前正在研究如何编写可以注入另一个.NET进程并重写函数返回值的.NET代码。我的想法是,我的代码会改变方法调用的返回值,如下所示:

Public Function DoSomething() As String

Return "Value"

End Function
我的代码将拦截对DoSomething的调用,并返回我自己的自定义字符串,而不是值

我猜我需要使用.NET评测API来做这类事情。是否有人有使用评测API的经验,如果有,您认为这种代码注入是可能的

我不打算用它来做任何恶意的事情,我只是想在.NET中尝试一些非常低级的东西,看看是否可以做到

干杯。 Jas。

您可以使用

我没有TypeMock,但基于,我想你可以这样做:首先是C,然后我将尝试翻译成VB

using (RecordExpectations recorder = RecorderManager.StartRecording())
{
    DoSomething();
    recorder.Return("My Own Custom String");
}

Using recorder As RecordExpectations = RecorderManager.StartRecording()
    DoSomething
    recorder.Return("My Own Custom String")
End Using

看起来TypeMock对于开源项目是免费的,否则就要花钱了。但是他们已经为你做了剖析API编码,所以你可以担心解决你的问题,而不是写毛茸茸的C++。我从未见过Detours.NET,但也许他们正在做的事情会给你一个如何实现你要做的事情的提示。

你可能会调查消息接收器。。。 这是一个高级领域,但基本上,它正是您想要做的,拦截一个函数对另一个函数的调用,在拦截过程中,执行您自己的代码。。。消息接收器可以链接在一起,并且可以作为发送消息接收器写入,以便在发起呼叫时进行处理,或者作为接收接收器写入,以便在另一端进行处理


这里有一个PostSharp可以做到这一点,但不是在运行时,它会在最初编写代码后修改代码。

Typemock Isolator附带的项目可以为您提供这种功能。 该项目是一个开源项目,但它使用Typemock隔离器。 它将允许您注册回调方法并在运行时更改其行为。 它不限于使用单元测试运行。
需要注意的一点是,一旦你使用它,你的性能就会受到影响

在现实世界中,为什么要这样做?是在运行时还是在运行之前?这需要在运行时完成。这有点悲哀,但我不打算在现实世界中使用它,我只是想挑战一下。我使用TypeMock进行单元测试,我认为通过注入我自己的代码来改变.NET代码的运行时方式可能是一个很酷的项目。我的想法可能是正确的:谢谢你的回复。我确实拥有TypeMock的许可证,并将其用于单元测试,但我的项目是一个实际的.NET应用程序。我想做的是编写我自己的.NET应用程序,它可以模拟TypeMock,将我自己的代码注入另一个程序集中,并动态更改它的函数返回值。