直接在.Net程序(C#)中执行 native code

简介: 不使用C++CLI,不使用 native dll. 直接在 .Net 程序 中之行 native code。 在vb时代就曾经有不少好事者做过在vb中直接调用之行汇编代码。 还专门做出了通用的模块来进行汇编代码的动态生成。
不使用C++CLI,不使用 native dll.
直接在 .Net 程序 中之行 native code。

在vb时代就曾经有不少好事者做过在vb中直接调用之行汇编代码。
还专门做出了通用的模块来进行汇编代码的动态生成。

实际上这就是执行 inline asm 。

.Net 中这个老方法仍然有效。不过今天要介绍的不是这个,而是一个函数接口更多样的方式。

大概是06年写过一个帖子 在 C# 中动态调用 native dll 的导出函数  。

今天介绍的方法和这个有一个公共点,都是利用了.Net 2.0的一个新特性。

Marshal.GetDelegateForFunctionPointer

和动态调用api不一样的是,函数指针不是从外部 dll 获取的,而是.Net程序动态分配的。
实际上也是执行  inline asm。

它相比vb时代的老方法,优点是,函数原型可以多样化,
调用可以通过委托方式,参数中的.Net类型到本地类型由框架自动转换。

可能这个一般人可能会很少用到。

实际用途有哪些呢?
拿来玩玩,显摆显摆;)

在安全保护方面还是可以适当利用利用。
如纯开发员的角度来看,可以将这个应用到注册授权认证的代码中。

另外可以用在 .Net 安全保护工具上,加密工具加密.Net程序后自动给程序集中注入这些调用。
甚至可以把一些简单方法体在加密时就编译成native代码插入。
而且可以不用附带一个native dll。
目录
相关文章
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
36 3
|
1月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
11天前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
30 5
|
19天前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
68 13
|
1月前
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
51 7
|
1月前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
1月前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
28天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
1月前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)