zoukankan      html  css  js  c++  java
  • 直接在.Net程序(C#)中执行 native code

    不使用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。
  • 相关阅读:
    HDU 1078 FatMouse and Cheese(DP)
    HDU 1160 FatMouse's Speed(DP)
    作业DAY019
    作业DAY018
    作业DAY017
    作业DAY016
    作业DAY015
    作业DAY014
    作业DAY013
    作业DAY012
  • 原文地址:https://www.cnblogs.com/rick/p/1049239.html
Copyright © 2011-2022 走看看