大佬教程收集整理的这篇文章主要介绍了如何将受管.NET程序集从内存中保存为EXE / DLL文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
加载的程序集实际上也完全按照它们出现在文件中的方式存储在内存中,即所有PE EXE头文件,资源等,即内存中的exe / dll文件,或者它们以不同方式存储在内存中,因此它不会可以将一些内存区域保存为dll / exe .net程序集吗?也就是说,如果我可以使用图像中的类比:您可以将jpeg文件作为位图加载到内存中,其中表示内存中图像的实际字节将与表示jpeg文件的实际字节完全不同.加载组件也一样吗?
最后,我如何获得程序集实际位于进程内存中的内存地址(指针)?
只是为了澄清:我无法访问通过Assembly.Load()加载程序集的初始字节数组.
这是一个related question,但是从答案中不清楚是否可能有一种方法将通过字节数组加载的程序集从内存转储到磁盘上的文件.
谢谢.
Assembly.ManifestModule
来获取它.
Marshal.GetHINSTANCE
将返回模块的HINSTANCE,该模块是根据this文章的模块的基址.虽然MSDN中的备注说明内存模块没有HINSTANCE,但似乎该方法确实返回内存模块的基址.
所以现在我们有了模块的基地址.接下来要做的是确定模块的大小.最简单的方法是解析PE文件的Section Headers.例如:
Name | Raw Size | Raw Address .text | 0x2000 | 0x400 .rsrc | 0x400 | 0x2400 .reloc | 0x200 | 0x2800
以上是大佬教程为你收集整理的如何将受管.NET程序集从内存中保存为EXE / DLL文件全部内容,希望文章能够帮你解决如何将受管.NET程序集从内存中保存为EXE / DLL文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。