直接在.Net程式(C#)中執行 native code

來源:互聯網
上載者:User
不使用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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.