于是我又想到了另外一个方法,就是把获取硬盘序列号的native dll作为资源文件封装到managed code中,然后在每次要调要该dll时,先把该dll写入磁盘,再动态绑定。由于managed code可以通过混淆器来保护,以致不能对其进行修改,这个我在《如何保护我们的 .net 程序集?》中已经给出了答案。动态绑定native dll又是另外一个技术难题,我已经找到了一些资料,与大家分享。 late binding on native dlls with c# late-binding dlls in c# using legacy plug-ins with .net - part 1 using legacy plug-ins with .net - part 2 c-function pointer for .net dynamic pinvoke method calls
不过最牛的就是下面这一招了!直接把native code用字节数组保存在managed code中,然后调用,真是牛b,不过我还没有完全弄懂,希望大家来实践实践。 execute native code from .net