以下實驗在WIN7下.net framework3.5 平台,vs2008環境中測試通過
今天做了一個軟件,想發布的時候才發現調用的類沒幾個,就像把它們都跟EXE文件打包在一起,以后復制去別的地方用也方便,於是上網搜了一下,發現網上大部分都是用ILMerge實現的,於是也自己試了一下,不過網上都沒有詳細的步驟演示,我就花點時間做了個教程,方便以后再有人想打包自己的程序, 有篇文章可以參考,好了廢話少說,馬上開始:
1.先到http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en下載ILMerge,才600多K,一下子就下好了.
2.下載后是安裝:
3.不到一分鍾就可以安裝完畢:
4.我是安裝在I盤下ILMerge目錄下,以下是安裝后的文件,就一個ILMerge.exe文件而已,我們等會就是用它打包程序的.
5.為了演示,我重新建了個工程,最后生成的是 Main.exe 和 newDll文件,其中newDll是Main.exe 中要引用的Dll文件,為了演示方便,我將它們都復制到了ILMerge的目錄下,現在我們就試着用ILMerge將newDll和Main.exe文件打包起來吧.
6.然后進入dos窗口,進入ILMerge目錄,然后執行下面代碼:
I:ILMergeILMerge.exe /ndebug /target:winexe /out:newclient.exe MainExe.exe /log newDll.dll
7.ILMerge運行時的窗口,此時它正在努力的將Main.exe和newDll文件捆綁在一起:
8.DOS窗口關閉后,我們在去ILMerge目錄下看看,此時已經生成好了我們想要的newclient.exe文件,它就是Main.exe和newDll.dll的結合體啦:
語法:
1)、合並file1.dll、file2.dll到destination.dll
ILmerge /ndebug /target:dll /out:C:\destination.dll /log C:\file1.dll C:\file2.dll
2)、合並file1.dll、file2.dll以及myApp.exe到newApp.exe
ILmerge /ndebug /target:winexe /out:C:\newApp.exe /log C:\myapp.exe C:\file1.dll C:\file2.dll
注意:合並為exe時,myapp.exe必須寫在file1.dll、file2.dll前面
完成之后,就得到了一個exe文件,如果想做一些邪惡的事情,可以將一些破解軟件的dll合並到你的exe中去。前提是,所有的dll都是托管的,如果嘗試合並C++寫的dll,則會失敗。有一個工具,叫做mergebin.exe,可以合並托管和非托管dll,用法我還沒研究出來,似乎比較困難的樣子。這個工具是ADO.NET 2.0 Data Provider for SQLite的作者寫的,他發布的System.Data.SQLite.dll可以被dotNet程序引用,還可以直接被C/C++程序調用,這個dll就是托管和非托管混合的dll,果然是很牛的!mergebin.exe在其源碼包里,有興趣的朋友可以研究一下。這是其官方網站:http://sqlite.phxsoftware.com
繼續邪惡的話題,如果你的exe里面合並有破解的dll,你可能不想讓別人知道,或者你不想讓別人反編譯你的exe文件。混淆軟件都收費,而且混淆之后方法還是看得見的,只不過名字毫無規則,沒辦法,用不了。還是加殼來的直接,我們得找一款很牛的加殼軟件。給大家推薦個軟件,叫做Sixxpack,專門加殼dotNet程序的,目前的最新版本為Sixxpack22,要求機器上裝有.netframework2.0以上版本。Sixxpack除了加殼,還使用了壓縮技術,最高壓縮比達80%。Sixxpack是免費軟件,官網是:http://www.reversers.net/
經Sixxpack加殼后,用Reflector打開exe文件,哈哈,看到的永遠都只是一個actmp.dll的信息,其中包含4個7zip命名空間和1個Sixxpack命名空間,反編出來這些東西對也沒啥用處。呵呵,原來是用7zip壓縮的,難怪那么高的壓縮比。
有一個問題是,用Sixxpack處理之后的程序集,版本信息是0.0.0.0,其他信息也不對。沒關系,使用Resource Hacker修改一下就OK了! Resource Hacker也是免費軟件,官網是:http://angusj.com/resourcehacker/
我這個小項目為了美化界面,用了一些邪惡的東西,最終的exe文件5MB左右,用Sixxpack處理之后,體積降到了2MB以內,運行時幾乎沒有性能損失。最重要的,很難反編譯,可以放心拿給別人用了。
文章轉載自:http://tech.ddvip.com/2010-04/1270099865149311.html