EasyHook给定的32位库不存在,用户库不会导出正确的Run

时间:2015-08-01 14:24:24

标签: c# easyhook

如果我这样做:

 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");

3 个答案:

答案 0 :(得分:1)

我不知道为什么以前没有工作。显然问题是找不到一些组件。在互联网上阅读后,我看到了一个没有Config.Register功能的例子。似乎最新版本(2.7)您无需在GAC中注册程序集。我只是评论了这个功能,但它确实有效。

答案 1 :(得分:1)

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

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

gacutil /uf EasyHook
gacutil /uf EasyLoad64
gacutil /uf MyAssembly

答案 2 :(得分:0)

如果您正在使用easyhook 2.7,则无需调用Config.Register。因此,请按照其他答案告诉您的步骤进行操作:

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

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

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

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

谢谢大家。花了我很多时间弄清楚您需要同时做这两项。