C# Import from .NET DLL



如何从。net DLL导入方法以从我的c#代码调用?我尝试了[DllImport...]方法和使用Assembly反射。我对。net非常缺乏经验,所以如果这是一个非常基本的问题,我很抱歉。我的目标是调用LZ4Decompressor32().Decompress(byte[])

Reflector显示LZ4Decompressor32是基类型ILZ4Decompressor的派生类型。所有这些都在Exec下,我猜是父命名空间?

截图:http://s0.uploads.im/KEqXk.jpg

我希望我只是搞砸了名称空间或类型路径,但我已经尝试了我能想到的所有组合。

仅供参考,这是我正在学习的一个古老的CTF挑战。完整的挑战从它的资源部分提取下一个阶段,然后在资源数据上调用LZ4Decompressor32().Decompress()方法。

ResourceManager manager = new ResourceManager(Name, Assembly.GetExecutingAssembly());
byte[] compressed = (byte[]) manager.GetObject("data");
return new LZ4Decompressor32().Decompress(compressed);
编辑:更多信息,当调试和打破Assembly.LoadFrom(...)我得到以下错误:

无法加载文件或程序集'file:///[dll path]'或其依赖项之一。该模块应该包含程序集清单。

我通过Dependency Walker运行DLL,唯一的抱怨是MSJAVA.DLL, Dependency Walker解释了(http://dependencywalker.com/faq.html)。

请按照以下步骤操作。

  1. 在Visual Studio中打开主程序(web项目或exe项目)的项目。

  2. 找到"解决方案资源管理器"窗格

  3. 右键单击"参考文献"节点,选择"添加参考文献"

  4. 点击"浏览"

  5. 选择要"导入"的DLL,点击OK

祝贺你,你现在已经"导入"了DLL中所有的非内部、非私有类和方法。

直接实例化并使用。

我通过从LZ4Sharp项目导入源代码来解决这个标志。我的希望是学习一些关于反射和名称空间/类路径的知识,但我想我可以自己进行实验。谢谢大家的建议;感谢@Frank Boyne对regsvr32和regasm的解释。

相关内容

  • 没有找到相关文章

最新更新