備注學院

          LuLu

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            5 隨筆 :: 50 文章 :: 16 評論 :: 0 Trackbacks
          From:http://www.cnblogs.com/Daylight/archive/2008/10/01/1302890.html

          這幾天在做自己的一個小程序,因為使用了3層架構,運行目錄下有很多dll文件,最終發布時,我打算將dll文件都合并到exe文件中去。微軟發布的免費軟件ILmerge可以完成這項工作,研究了一下,其用法如下:

          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文件?;煜浖际召M,而且混淆之后方法還是看得見的,只不過名字毫無規則,沒辦法,用不了。還是加殼來的直接,我們得找一款很牛的加殼軟件。給大家推薦個軟件,叫做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以內,運行時幾乎沒有性能損失。最重要的,很難反編譯,可以放心拿給別人用了。

          posted on 2009-01-05 13:44 smildlzj 閱讀(873) 評論(0)  編輯  收藏 所屬分類: C#
          主站蜘蛛池模板: 郸城县| 时尚| 中方县| 泗洪县| 通化县| 临朐县| 龙井市| 灵寿县| 应城市| 军事| 巴彦县| 布拖县| 罗平县| 南溪县| 蓬安县| 江门市| 元氏县| 永平县| 岳普湖县| 玉田县| 新龙县| 田东县| 许昌县| 南昌县| 光泽县| 威远县| 西平县| 格尔木市| 晋宁县| 青阳县| 崇礼县| 信阳市| 高台县| 泗洪县| 桂阳县| 安岳县| 元江| 城步| 景宁| 南皮县| 迁安市|