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