• <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>

            luqingfei@C++

            為中華之崛起而崛起!
            兼聽則明,偏聽則暗。

            初識(shí)exe程序反匯編小感[轉(zhuǎn)]

            本文出自 “空中的魚” 博客,出處http://airfish.blog.51cto.com/358752/264819

             
            近期由于一個(gè)項(xiàng)目的需要,我初步接觸了exe程序反匯編。折騰了好幾天終于見到了那個(gè)程序中急需的算法的真面目了。回顧整個(gè)過(guò)程,小有感悟。為記念初識(shí)程序反匯編的心路歷程,特記錄下對(duì)程序反匯編過(guò)程的粗淺感受。

            一、工作環(huán)境:
              1查殼工具:PEiD(用于初步確定exe程序是否加殼以及使用何種開發(fā)軟件編寫);
              2反編譯工具:DeDe(經(jīng)過(guò)查殼工具檢查,將要被反匯編的程序是用“BorlandC++ 1999”編寫的,所以選用專門反編譯Delphi程序的DeDe;用于初步確定程序模塊、函數(shù)方法劃分對(duì)應(yīng)exe程序相應(yīng)匯編指令地址的位置);
              3反匯編動(dòng)態(tài)調(diào)試工具:OllyICE(即,OD;用于動(dòng)態(tài)反匯編調(diào)試程序的相關(guān)代碼邏輯);
              4開發(fā)環(huán)境:VS.NET 2005
              5其他工具:EditPlus、記事本、計(jì)算器等若干;
             
            二、基礎(chǔ)知識(shí):
              1匯編程序設(shè)計(jì):主要深入了解程序數(shù)據(jù)存放、堆棧使用、子程序調(diào)用等技巧;不同類型數(shù)據(jù)的地址跳轉(zhuǎn)規(guī)則(一般都是跳轉(zhuǎn)該類型長(zhǎng)度個(gè)位置);
              2c++程序設(shè)計(jì):基本語(yǔ)法結(jié)構(gòu);指針、數(shù)據(jù)類型的使用和控制;
              3相關(guān)工具軟件的基本使用方法;
             
            三、工作過(guò)程:
             我的反匯編大概過(guò)程是:
            查殼->脫殼、判斷開發(fā)程序使用的環(huán)境->反編譯->初步定位主要功能模塊或函數(shù)的匯編指令起始、終止地址->反匯編準(zhǔn)備->查找程序中的特征字符串或特征值,進(jìn)一步確定需要反匯編的代碼邏輯的位置->開始反匯編調(diào)試運(yùn)行,分析需要反匯編的代碼邏輯的具體過(guò)程->將分析出來(lái)的邏輯流程使用c++語(yǔ)言實(shí)現(xiàn)
             
            1、 查殼:
            運(yùn)行PeiD,打開要反匯編的exe程序,在這里姑且稱之為:test.exe吧。
            如示意圖1

            多項(xiàng)掃描上面那行“Microsoft Visual C++ 7.0 Dll Method 3”就是該程序的開發(fā)環(huán)境了。
            接下來(lái)電擊窗口右下角的“>>”按鈕,再來(lái)看看該程序是否加殼,如示意圖2

            分別點(diǎn)擊熵值“EP校驗(yàn)快速校驗(yàn)這三行最右側(cè)的“-”按鈕,就可以看到是否加殼的提示了。
            哈哈,test.exe程序太干凈了。沒有任何加殼,可以選用相應(yīng)的反編譯工具進(jìn)行下一步啦。  ^_^
             
            2、 反編譯:
            “1中只是示意圖,我實(shí)際反編譯的程序是由“BorlandC++ 1999”編寫的,所以選擇DeDe 3.5作為反編譯工具;DeDe3.5的具體使用方法,請(qǐng)自行在網(wǎng)上查閱。
            示意圖3

             
            3
            、 初步定位主要模塊、函數(shù)對(duì)應(yīng)的匯編指令地址:
            根據(jù)反編譯出來(lái)的部分類和方法的代碼框架,確定了兩組可疑的匯編指令地址段。
            如示意圖4

             
            注意選擇過(guò)程按鈕,如上圖所示。然后雙擊右下側(cè)列表中的Button3Click,就可以查看該方法對(duì)應(yīng)的函數(shù)體了。當(dāng)然,這樣看到的函數(shù)體不會(huì)是我們一般意義上的函數(shù)體,這函數(shù)體只有一個(gè)框架是高級(jí)語(yǔ)言的樣子,函數(shù)體內(nèi)部都是匯編代碼,不過(guò)這已經(jīng)足夠了,后面我們還要進(jìn)行詳細(xì)的反匯編調(diào)試分析呢。嘿嘿。函數(shù)體示意圖5如下:
             
            好,記下這段函數(shù)的首地址、尾地址,開始嘗試反匯編操作。

            4
            、 反匯編準(zhǔn)備:
            使用ODOllyICE)打開test.exe程序,如示意圖6
             
            找到剛才記錄下的首地址、尾地址。如上圖中兩個(gè)黑圓點(diǎn)處的紅條,分別是首地址:00401EC4、尾地址:00401EF5

            5
            、 反匯編調(diào)試:
            根據(jù)步驟4中定位的匯編指令地址,再結(jié)合示意圖6[ASCII”Hello OD”][ASCII”this is OllyDbg DeAsm”]等關(guān)鍵字符串,進(jìn)行所有匹配字符串的檢索,就可以開始使用OD進(jìn)行調(diào)試了。具體使用方法請(qǐng)參閱OD自帶的help文件。
            逐句分析所需部分的匯編代碼邏輯流程。其間可以用其他一些輔助工具來(lái)幫助記錄動(dòng)態(tài)分析過(guò)程中的數(shù)值傳遞軌跡及變換方法。

            6
             C++實(shí)現(xiàn):
            根據(jù)分析出的匯編代碼邏輯,使用C++實(shí)現(xiàn)同樣的功能。
             
            備注:在定位反匯編所需的代碼位置時(shí),除了一些ASCII字符串的定位方法,還能通過(guò)程序中聲明的一些常量字符串、映射控制矩陣、計(jì)數(shù)器等常量來(lái)進(jìn)行更為精確的定位。
             
             
             以上就是我初識(shí)程序反匯編主要過(guò)程的記錄。注意:由于“保密協(xié)議”的限制,在此不便過(guò)多討論項(xiàng)目代碼細(xì)節(jié)。還望大家敬請(qǐng)?jiān)彙懙暮艽譁\,希望有反匯編經(jīng)驗(yàn)的前輩不吝指教,在此,先謝過(guò)啦。哈哈 ^_^

            posted on 2010-08-11 10:44 luqingfei 閱讀(5981) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 反匯編

            評(píng)論

            # re: 初識(shí)exe程序反匯編小感[轉(zhuǎn)][未登錄] 2011-02-23 03:02 KK

            好文章,挺詳細(xì)的  回復(fù)  更多評(píng)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            導(dǎo)航

            <2015年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            統(tǒng)計(jì)

            留言簿(6)

            隨筆分類(109)

            隨筆檔案(105)

            Blogers

            Game

            Life

            NodeJs

            Python

            Useful Webs

            大牛

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲国产另类久久久精品小说| 久久99国产精品尤物| 久久久久亚洲精品无码网址| 狠狠综合久久综合中文88| 国产精品成人久久久| 久久香蕉国产线看观看精品yw| 久久国产精品99精品国产987| 久久久久国产成人精品亚洲午夜| 久久国语露脸国产精品电影| 国产成人久久精品二区三区| 久久精品综合网| 久久久无码精品午夜| 日本强好片久久久久久AAA| 久久婷婷五月综合97色直播| 久久精品国产网红主播| 国内精品伊人久久久影院| 久久亚洲国产欧洲精品一| 久久亚洲sm情趣捆绑调教| 激情久久久久久久久久| 久久精品成人免费看| 九九久久自然熟的香蕉图片| 久久99九九国产免费看小说| 久久婷婷人人澡人人| 精品无码久久久久久国产| 99久久国产综合精品麻豆| 久久精品aⅴ无码中文字字幕不卡 久久精品成人欧美大片 | 国产精品久久久久影视不卡| 日本亚洲色大成网站WWW久久 | 亚洲色大成网站www久久九| 久久婷婷色综合一区二区| 国产精品热久久无码av| 久久精品二区| 一级做a爰片久久毛片毛片| 午夜福利91久久福利| 久久亚洲精品无码观看不卡| 香港aa三级久久三级老师2021国产三级精品三级在 | 国产精品久久久久久久久软件| 久久丝袜精品中文字幕| 午夜精品久久久内射近拍高清 | 亚洲伊人久久大香线蕉综合图片| 国内精品伊人久久久久777|