Net 框架目前逐步在普及了,仍然有很多人在尋找如何讓.NET程序脫離.Net框架的方法。
現成的工具有 Xenocode 的postbuidle或者vas,還有 Salamander .Net Linker .
另外還有 MaxToCode 作者以前做的 framework linker. 以及一些支持注冊表模擬和文件模擬的打包工具molebox,thinstall等.
最後還有某網友(應其要求隱去網名) 兜售的一個實現方法.
Xenocode的是使用了一個虛擬機環境,模擬框架需要的 注冊表信息和文件信息.
Xenocode號稱的生成native代碼功能實際上就是指的這個功能.
我測試了幾個程序打包,兼容性似乎不怎麼好. 不知道是不是因為機器上已經安裝了框架的原因。
Jason做的 framework linker,以前我也使用過, 他的實際上是利用了 Remotesoft的內核文件,然後自己實現了一個loader。好像是使用的早期的內核文件,兼容性也不太好。
Salamander .Net Linker ,Remotesoft的一個產品,沒有可以下載的,但是其兼容性似乎很不錯。移動的飛信軟件就利用了它的核心。
某網友的方法似乎是利用remotesoft的核心和飛信的框架,因為他並沒有免費公開方法,從他給出的樣例可以看到有remotesoft的核心文件以及飛信的框架程序。
這裡要介紹的方法是直接利用飛信的框架來實現脫離 .Net framework運行。
首先下載一個飛信的程序安裝。在安裝目錄中會有 VMDotNet 目錄。這個就是.Net框架虛擬環境需要的文件。
直接把整個目錄提取出來。
如何利用這個虛擬環境運行 自己的 .Net 程序呢?
很簡單,一個命令行搞定。在 VMDotNet 目錄裡面會找到一個 FetionVM.exe 。這個是虛擬環境的loader。
使用方法: FetionVM.exe pathtoyoureexe
就是直接把你的 .Net 程序 作為命令行參數傳遞給 FetionVM.exe 就可以在這個虛擬環境中執行你的。net程序了。
最好再自己寫一個啟動程序,首先檢查系統是否安裝了。Net框架,如果有直接運行。沒有調用虛擬環境運行。
這個啟動程序飛信也有,如果不想自己寫就直接拿飛信安裝目錄中的 Feition.exe,但是這樣的話 你自己的.Net程序的名字必須叫 FeitionFX.exe 。把它和Feition.exe 放在同一目錄下,直接執行 Feition.exe 即可。
另外,如果你對。Net程序使用了加密保護,需要注意一下,目前市面上的大部分。Net加密工具加密後的程序集不能在這個虛擬環境中運行的。
這個東西除了能實現脫離 。net框架運行外,還有另外一個副作用--讓。net程序運行在指定版本的 。net 框架中(雖然機器上安裝了。net框架,仍然可以讓。net程序在這個虛擬框架下運行)。
前面介紹了 讓 .Net 程序 脫離 .Net framework框架 運行的方法 ,
但是有些朋友應用中還是遇到了一些問題,主要時需要自己提取框架程序以及應用的dll問題。
這裡介紹一個偷懶提取方式。
我們可以利用 Remotesoft linker的試用版來提取,試用版的獲取
http://www.remotesoft.com/linker/try.Html
試用版提取時可以用 mdeploy 方式或者 native 方式。
如果時 mdeploy 方式,比較簡單,直接提取出來了基本能用了。
他提取的是你系統當前的 框架環境。也就是你安裝了 .Net 3.0那麼提取出來的核心文件也就是 3.0的。
提取完後會有一個 exe文件和 rsm 文件,你只需要用fetion框架裡面的 fetionvm.exe替換這裡生成的exe文件即可。
實際上這個文件是一個預先寫好了的模板程序,自己可以修改一下資源屬性,就OK了。
native 模式提取出來的虛擬框架目錄結構和 fetion的那個一樣的。
把文件復制到fetion的框架裡面覆蓋。
然後自己可以改改 fetionvm.srm文件,這個文件在前面已經還原出他的代碼了。
這樣就省去了自己提取dll文件的麻煩。