采用Native 引导方式的.Net加密保护_.Net教程
推荐:ASP.NET2.0服务器控件之创建复杂属性本文详细讲解了一个利用ASP.NET 2.0技术创建复杂属性的示例。 1、示例应用 本文所实现的示例很简单,其核心是通过实现自定义服务器控件的连字符形式复杂属性来说明复杂属性的实现方法,其中
这类加密保护方式属于整体程序集的加密保护.这个方法首要解决的问题就是 native code 和 .Net Code如何交互.这里介绍三种实现方式.
1. C /CLI 实现.
这个比较简单了,会C /CLI一下子就能完成了.
Loader是由C /CLI实现的.运行时通过解码程序集通过反射载入然后运行.
void InvokeAssemblyResource() { try
|
2. 利用C#导出Com接口和native code交互.Loader由C#和native code两部分组成.
C#部分代码
public interface IInvokeAssembly { void LoadAndExecute(byte[] pBuf); }; public class CInvokeAssembly : IInvokeAssembly { public CInvokeAssembly() { } public void LoadAndExecute(byte[] pBuf) { try { Assembly asm = Assembly.Load(pBuf); asm.EntryPoint.Invoke(null,null); } catch(Exception ex) { MessageBox.Show(ex.Message); } } } |
这里导出的 IInvokeAssembly 接口,将在native code中使用.
native code 部分
void InvokeAssemblyResource() { IInvokeAssemblyPtr pInvoker; //COM Pointer to the .Net Interface if(FAILED(pInvoker.CreateInstance(CLSID_CInvokeAssembly))) HRSRC hRC = FindResource(NULL,MAKEINTRESOURCE(IDR_EMBEDDED_ASSEMBLY),"RT_EMBEDDED_ASSEMBLY"); SAFEARRAY* pSA = NULL; if(NULL !=(pSA = SafeArrayCreateVector(VT_UI1, 0, dwSize))) if(FAILED(SafeArrayAccessData(pSA,&pBuf))) memcpy(pBuf, hAsm, dwSize); UnlockResource(hRes); SafeArrayUnaccessData(pSA); pInvoker->LoadAndExecute(pSA); //Invoke the Reflection to load and Execute our Byte[] if(pSA) SafeArrayDestroy(pSA); |
这里还有一个问题,loader是两部分.加密的程序集可以作为资源签入到native code loader中.但是C#部分怎么处理?一个比较隐蔽的方式是,在安装程序时将它安装到gac中.
分享:面向服务及其在互联系统策略中的角面向服务的业务环境 面向服务是一种创建分布式系统的方法。在它最抽象的层面,面向服务作为一个服务提供程序,包含了一切——从大型机应用程序到打印机到码头工作人员到隔夜交货公
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-采用Native 引导方式的.Net加密保护。