C# Import from .NET DLL
本文关键字:DLL NET from Import | 更新日期: 2023-09-27 18:04:27
如何从。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)。
请按照以下步骤操作。
-
在Visual Studio中打开主程序(web项目或exe项目)的项目。
-
找到"解决方案资源管理器"窗格
-
右键单击"参考文献"节点,选择"添加参考文献"
-
点击"浏览"
-
选择要"导入"的DLL,点击OK
祝贺你,你现在已经"导入"了DLL中所有的非内部、非私有类和方法。
直接实例化并使用。
我通过从LZ4Sharp项目导入源代码来解决这个标志。我的希望是学习一些关于反射和名称空间/类路径的知识,但我想我可以自己进行实验。谢谢大家的建议;感谢@Frank Boyne对regsvr32和regasm的解释。