C# 怎样内存调用dll文件.

threadroc 2016-07-31 10:27:08
我要调用C++写的一个dll,同时又不希望别人看到我的dll,所以不能用路径调用的方式,想直接集成到Resource.resx里,然后加载到内存里,但是加载到内存之后要怎样调用该dll里的方法就不会了. 希望大大们解惑.谢谢
...全文
491 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
john_QQ:2335298917 2016-08-01
  • 打赏
  • 举报
回复
把dll加密,然后或者从服务器下载,或者从包含到可执行文件的资源中,然后都是保存为临时文件,然后加载,程序运行完毕再执行删除程序
threenewbee 2016-08-01
  • 打赏
  • 举报
回复
VMware ThinApp http://freemanluo.blog.51cto.com/636588/487037
lshfong 2016-08-01
  • 打赏
  • 举报
回复
你可以试下用二进制写到数据库里,用的时候加载到内存里使用
wanghui0380 2016-08-01
  • 打赏
  • 举报
回复
可以做到,微软本身并没有提供,不过从原理上有这个可能。就是别把当dll,只把他当PE文件,直接加载PE文件,不过加载PE文件的过程比较复杂,我个人懒得研究(呵呵,知道是知道,不过没啥特别场景非要用这个,所以个人不会深入去研究)
Saleayas 2016-08-01
  • 打赏
  • 举报
回复
如果仅仅是这样,那么很简单。 搜索一个代码:CMemLoadDll
threadroc 2016-07-31
  • 打赏
  • 举报
回复
引用 3 楼 Saleayas 的回复:
没有用的。 C# 可以看到代码的,不管你怎样混淆。 然后,就可以获得你的 C DLL 以及 呼叫的方式。
就是因为可以获得C DLL的呼叫方式,所以我才不想把dll文件弄到本地,而是直接从服务器下载到内存里.
Saleayas 2016-07-31
  • 打赏
  • 举报
回复
没有用的。 C# 可以看到代码的,不管你怎样混淆。 然后,就可以获得你的 C DLL 以及 呼叫的方式。
threadroc 2016-07-31
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
你要先搞清楚,resx本质上是先把里面的资源解压到temp目录,然后再通过一般加载文件的方式加载
那我就从服务器下载dll吧.
Poopaye 2016-07-31
  • 打赏
  • 举报
回复
你要先搞清楚,resx本质上是先把里面的资源解压到temp目录,然后再通过一般加载文件的方式加载
秋的红果实 2016-07-31
  • 打赏
  • 举报
回复
C++很难反编译,就用一般加载方式使用 你要担心别人拿走dll,可以用加密狗对它加壳,拿走也没用,反向工程更难 每种文件都有自己的组织方式,存储方式,程序需要相应的方式才能读取文件内的内容,[DLLImport……方式加载dll读取的是dll里面的内容,而不是整个文件;再比如mdf文件,我们一般是读取其里面的内容(字符,数字,图片等),而不是整个mdf文件,从理论推断,你想把它整个读进内存,不可行
threadroc 2016-07-31
  • 打赏
  • 举报
回复
引用 7 楼 zj_zwl 的回复:
从服务器下载,以字节数组形式load是可行的
你指的是用Assembly load吗,Assembly好像只支持C# 不支持C++写的dll. load了应该也没法调用吧.
zj_zwl 2016-07-31
  • 打赏
  • 举报
回复
从服务器下载,以字节数组形式load是可行的
threadroc 2016-07-31
  • 打赏
  • 举报
回复
引用 5 楼 shingoscar 的回复:
[quote=引用 2 楼 threadroc 的回复:] [quote=引用 1 楼 shingoscar 的回复:] 你要先搞清楚,resx本质上是先把里面的资源解压到temp目录,然后再通过一般加载文件的方式加载
那我就从服务器下载dll吧.[/quote] 据我所知,微软没有api能从内存里加载dll https://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/[/quote] 蒽,我也查了好多资料,的确应该是没有.
Poopaye 2016-07-31
  • 打赏
  • 举报
回复
引用 2 楼 threadroc 的回复:
[quote=引用 1 楼 shingoscar 的回复:] 你要先搞清楚,resx本质上是先把里面的资源解压到temp目录,然后再通过一般加载文件的方式加载
那我就从服务器下载dll吧.[/quote] 据我所知,微软没有api能从内存里加载dll https://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧