问题标签 [clr-hosting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 当本机进程托管 .NET Core 运行时时,在 C# 和 C++ 之间传递 C# 托管实例
我正在使用 HostWitHostFxr 示例进行原型设计,该示例允许本机进程使用 nethost 和 hostfxr 库托管 .NET Core。 https://github.com/dotnet/samples/tree/master/core/hosting/HostWithHostFxr
我正在尝试将托管对象的实例从 C# 返回到 C++。然后 C++ 调用另一个 C# 方法对托管对象执行某些操作并释放它。
现在我在第二步失败了: 未处理的异常。System.NullReferenceException:对象引用未设置为对象的实例。
根据我所做的研究,我的理解是,要返回对 C++ 的托管 C# 对象引用,我需要使用 GCHandle.Alloc() 和 GCHandleType.Pinned 来固定对象。
我修改了 C# 示例 Lib.cs 以添加一个新的 Foobar 类:
我添加了一个返回 Foobar 实例的方法:
我添加了一个方法来处理 Foobar 的实例并释放它:
在 C++ 端,我修改了 nativehost.cpp 以添加此代码以获取 Foobar 实例:
这与 Foobar 实例做一些事情:
为了让这个工作,我缺少什么?
c# - 击败从内存中擦除 PE
我怎样才能打败从内存中擦除 PE?
第一:我正在处理的可执行文件是 C++ 中的 CLR 主机,因此后面的程序是 C# 第二:C# 程序使用 Virtual Protect 功能擦除 PE 标头(反倾销的非常常见的保护)
在所有情况下,我都使用 x64dbg 转储了 C# 程序,然后由于擦除 PE 标头,我无法真正实现我的目标。我发现修补此问题的唯一方法是在程序启动时用 NOP 替换 VirutalProtect 调用,然后程序将无法擦除 PE 标头,也许?
PS:我无法通过原始文件修补转储文件,因为没有原始文件,我拥有的唯一可执行文件是 C++ 中的 CLR 主机和 C# 中的转储可执行文件。
我将不胜感激任何帮助,对不起我的英语不好。
c# - CLR Host - 如何使用任意方法签名执行函数
我有一个托管 C# 测试 DLL,我想从我的非托管 C++ 代码中调用它的函数。
问题是我找不到一个示例来说明如何从我的 c++ 代码中调用任意函数,我只能得到ICLRRuntimeHost::ExecuteInDefaultAppDomain
工作,但这个函数确实使用了预定义的方法签名。
问题
我能够ShowMsg
从我的 C# DLL 中执行该函数,但我不知道如何调用具有其他签名的方法而不是int(int)
. 有人可以帮我吗?
C++ 代码
C# 代码