c# - EasyHook 给定的 32 位库不存在,用户库没有导出正确的运行

标签 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: The given 32-Bit library does not exist!

我正在使用具有管理员权限的 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");

最佳答案

我遇到了同样的问题,但使用的是 64 位。

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

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

关于c# - EasyHook 给定的 32 位库不存在,用户库没有导出正确的运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31762879/

相关文章:

c# - Visual Studio 2013 不发现单元测试

c# - 在 C# 中,如何获取本地计算机名称列表,例如在 Windows 资源管理器中查看网络的名称

code-injection - Windows - 如何在应用程序启动前将代码注入(inject)应用程序的内核?

c# - 在 Windows 上拦截/重定向传出的 http 连接

c++ - 使用 GetProcAddress 和 EasyHook Hook 类方法和构造函数

c# - WPF 防止数据网格在窗口大小调整时自动调整大小

c# - 如何将 jQuery 星级评分插件与 ASP.NET 和 SQL Server 数据库结合使用

c# - 验证 WCF 和 WebService 方法参数值的最佳方式

c# - Easyhook:如何从使用 LoadLibrary 加载的 DLL 中 Hook 函数

c# - EasyHook recv 不是 "hook"所有数据包