• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            面對(duì)現(xiàn)實(shí),超越自己
            逆水行舟,不進(jìn)則退
            posts - 269,comments - 32,trackbacks - 0

                談到"C#代碼反編譯",大家可能都會(huì)想到 Reflector代碼反編譯工具,對(duì)其應(yīng)該也不會(huì)太陌生;做C#開發(fā),它算得上是一個(gè)不可或缺的實(shí)用工具。通過它我們可以很方便的查看一個(gè)程序集的源代碼(這是其最基本的使用,也是大家常用的),還可以方便破解軟件...,而我這篇文章要跟大家分享的是:用Reflector將C#的開發(fā)的軟件[項(xiàng)目](此文中所說的是winForm項(xiàng)目,對(duì)于.net項(xiàng)目可以借鑒或參考)的項(xiàng)目代碼還原——反編譯得到可運(yùn)行項(xiàng)目源碼。 我所做的反編譯,并不是'破解',其使用的前提或情況是:公司原來請(qǐng)人開發(fā)的'配餐軟件(幼兒園版)',現(xiàn)有客戶咨詢想買,并且軟件中存在一些問題需改,——不是本人開發(fā)的,該軟件也無源碼,想修改只能想辦法得到軟件的源碼。具體的'破解'方法記錄在下,方便自己以后查看!(ps: '破解'的方法,自己之前就摸索過。但困于反編譯之后的error比較多,沒有耐心,有的問題感覺比較離奇,試了幾次不行就放棄了  ——這就間接的說明:真正的黑客,應(yīng)該都是比較有耐心的,呵呵..., 但做軟件開發(fā),又何嘗不需要這樣?!)

                 a.使用到的工具:Reflector,具體的說是:Reflector插件File disassembler(具體是什么和how to use,直接上網(wǎng)查)。

                 b. 打開Reflector,選擇要'破解'的軟件(.exe)主程序,再選擇并點(diǎn)擊 如圖:, 在右側(cè)出現(xiàn)的 程序集(輸出)類型選擇界面 選擇類型'windows Appliction' (因?yàn)槭莣inForm應(yīng)用程序,如果是選擇的其它 如'class ...'類庫,則需要在之后的步驟中,改變項(xiàng)目屬性中的 輸出類型,不建議這樣操作),如圖:

             點(diǎn)擊 生成 即可 得到此主程序集的源碼,其它的相關(guān)程序集再如此操作即可! ——不要以為大功告成,這只是第一步,麻煩的在后面!

                c.將生成的源碼 在Vs中打開(項(xiàng)目), 先試著運(yùn)行下,(一般)會(huì)報(bào)錯(cuò),排除'xxx程序集不存在'這類的錯(cuò)誤,我所遇到的如下:

            using System;
            using System.Collections.Generic;
            using System.Runtime.CompilerServices;
            using System.Runtime.InteropServices;

            [CompilerGenerated]
            internalclass<PrivateImplementationDetails>{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}
            {
            internalstatic Dictionary<stringint> $$method0x600012e-1;
            internalstatic Dictionary<stringint> $$method0x6000137-1;
            internalstatic Dictionary<stringint> $$method0x6000137-2;
            internalstatic Dictionary<stringint> $$method0x600014a-1;
            internalstatic Dictionary<stringint> $$method0x6000169-1;
            internalstatic Dictionary<stringint> $$method0x60001b6-1;
            internalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-1; // data size: 20 bytes
            internalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-2; // data size: 20 bytes
            internalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-3; // data size: 20 bytes
            internalstatic __StaticArrayInitTypeSize=20 $$method0x6000213-4; // data size: 20 bytes

            [StructLayout(LayoutKind.Explicit, Size=20, Pack=1)]
            privatestruct __StaticArrayInitTypeSize=20
            {
            }
            }

             源碼文件中會(huì)出現(xiàn)一個(gè) _PrivateImplementationDetails_{1FF4F699-35E0-4117-BDBC-9E44A1B0F9F5}.cs 文件名很長(zhǎng) 內(nèi)容如上的 亂碼類,對(duì)此解決辦法時(shí):注釋此類 或直接刪除。【程序相關(guān)的文件,如圖片、數(shù)據(jù)庫等要記得放到項(xiàng)目關(guān)聯(lián)位置,一般在bin/debug/文件夾下】

                d. 添加相關(guān)程序集的引用,設(shè)置啟動(dòng)對(duì)象。到這兒,差不多程序就可以 跑起來了,但是還沒有完 ——因?yàn)?反編譯后的代碼,文件夾的位置和界面與資源引用之間的關(guān)聯(lián),基本上都亂了.所以現(xiàn)在要解決的關(guān)鍵問題是:恢復(fù)文件間的關(guān)聯(lián)和引用(其它的問題,通過調(diào)試就差不多可以解決)。如圖:

            窗體的.cs和.resx(資源)文件不在同一個(gè)文件夾中,對(duì)應(yīng)窗體的.resx文件都加上了項(xiàng)目或解決方案名前綴(zhiyiSystem.) ——This is point!  這就是我們要解決問題的關(guān)鍵:恢復(fù)窗體的.cs和.resx文件間的關(guān)聯(lián),操作大致有以下兩步:1.將窗體的.cs和.resx文件放在同一個(gè)文件中——即同一目錄。2.去掉窗體的.resx文件的前綴 ——即修改文件名,如果是一個(gè)個(gè)文件去修改,窗體比較多的話,是一件非常重復(fù)而無聊的事,于是 就上網(wǎng)找 "批量修改文件名"的工具,下載了一兩個(gè)感覺都不好用,找不到,只能自己搞了,再說這東西簡(jiǎn)單,說白了就是 遍歷文件夾中文件并'重命名'(代碼就不貼出了,文章后 附有 自己寫的 "批量修改文件名"工具)。

                   到此,程序就可以真正跑起來了。別看我寫出來,似乎'破解'就是一會(huì)兒的事,但我做的時(shí)候,卻幾經(jīng)折騰 好幾次都感覺"算了,又卡住了...",有些或大或小問題,在這里因?yàn)闀r(shí)間的原因 及有些步驟一時(shí)半會(huì)也想不起來了,但主要的方法應(yīng)該都沒有落下,如果有不明白的朋友,可以留言交流,再做解答;也希望在'破解'方法有經(jīng)驗(yàn)的,能多提些意見,分享下你的‘破解’經(jīng)驗(yàn)!

                 后附:
                           批量修改文件名工具.rar

            本文轉(zhuǎn)自:http://www.cnblogs.com/know/archive/2011/03/15/1985026.html
            相關(guān)
            連接:http://www.cnblogs.com/verygis/archive/2008/12/02/1346072.html

            posted on 2013-10-23 10:23 王海光 閱讀(942) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 工具
            亚洲伊人久久综合中文成人网| 亚洲国产精品无码久久| 激情综合色综合久久综合| 久久久久这里只有精品| 亚洲综合伊人久久综合| 久久夜色精品国产噜噜亚洲AV| 久久精品成人免费网站| 日韩十八禁一区二区久久| 久久亚洲精品人成综合网 | 性做久久久久久久久老女人| 久久午夜福利无码1000合集| 久久亚洲精品中文字幕三区| 97精品伊人久久大香线蕉| 亚洲天堂久久精品| 久久综合狠狠综合久久| 久久婷婷五月综合成人D啪| 国产一级做a爰片久久毛片| 中文无码久久精品| 久久亚洲高清综合| 久久综合狠狠综合久久激情 | AA级片免费看视频久久| 亚洲欧美日韩中文久久 | 欧美噜噜久久久XXX| 要久久爱在线免费观看| 久久精品国产精品亚洲人人| 日韩欧美亚洲综合久久影院d3| 欧洲成人午夜精品无码区久久| 亚洲午夜精品久久久久久浪潮| 久久久久久青草大香综合精品| 伊人久久精品线影院| 久久中文字幕一区二区| 久久久久久久尹人综合网亚洲 | 99久久er这里只有精品18| 亚洲中文字幕无码久久精品1| 亚洲人成无码www久久久| 久久久久久极精品久久久| 欧美午夜A∨大片久久| 热综合一本伊人久久精品| 久久精品国产清自在天天线| 久久强奷乱码老熟女| 伊人 久久 精品|