4

如果我做:

 try
        {
            try
            {
                Config.Register(
                    "anydescription",
                    "myprogram.exe",
                    "inject.dll");
            }
            catch (ApplicationException ex)
            {
            }

            RemoteHooking.IpcCreateServer<interfaceppp>(ref ChannelName, WellKnownObjectMode.SingleCall);
            RemoteHooking.Inject(pid, "inject.dll", "inject.dll", ChannelName);

        }
        catch (Exception ExtInfo)
        {
        } 

我收到此错误:

STATUS_INVALID_PARAMETER_4:给定的 32 位库不存在!

我正在使用具有管理员权限的 VS。在 bin 文件夹中,我有所有需要的文件 AFAIK:

EasyHookFilesNeeded

我添加了 easyhook.dll 和 easyload32 和 64 作为参考(为什么这两个新文件?还没有看到任何文档谈论它们)。谢谢!

PD:已经尝试过同样的结果:

 System.EnterpriseServices.Internal.Publish publish = new System.EnterpriseServices.Internal.Publish();
            publish.GacInstall("EasyHook.dll");
            publish.GacInstall("EasyHook32.dll");
            publish.GacInstall("EasyHook64.dll");
            publish.GacInstall("EasyLoad32.dll");
            publish.GacInstall("EasyLoad64.dll");
4

3 回答 3

3

我有同样的问题,但使用 64 位。

从 GAC 中删除我的程序集和 EasyHook 解决了这个问题。

gacutil /uf EasyHook
gacutil /uf EasyLoad64
gacutil /uf MyAssembly
于 2016-01-20T17:27:47.307 回答
1

我不知道为什么它以前不起作用。显然问题是找不到一些程序集。在网上阅读后,我看到了一个没有该Config.Register功能的示例。似乎使用最新版本(2.7),您不需要在 GAC 中注册程序集。我刚刚评论了这个函数并且它起作用了。

于 2015-08-02T00:32:28.647 回答
0

如果您使用的是 easyhook 2.7,则无需调用Config.Register. 因此,按照其他答案告诉您的那样进行:

从您的代码中删除以下行:

Config.Register(
    "anydescription",
    "myprogram.exe",
    "inject.dll");

从 gac 中删除以前注册的程序集:

gacutil /uf EasyHook
gacutil /uf EasyLoad64
gacutil /uf inject

感谢大家。我花了很长时间才弄清楚你需要同时做这两件事。

于 2020-06-25T20:00:23.597 回答