<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 淺談基于51單片機(jī)的反匯編要點(diǎn)

          淺談基于51單片機(jī)的反匯編要點(diǎn)

          作者: 時(shí)間:2012-10-09 來(lái)源:網(wǎng)絡(luò) 收藏

            從一個(gè)現(xiàn)有的單片機(jī)應(yīng)用系統(tǒng)中讀出目標(biāo)代碼進(jìn)行,可以分析原程序的設(shè)計(jì)思想,然后加以改進(jìn)和創(chuàng)新,這是單片機(jī)愛(ài)好者學(xué)習(xí)單片機(jī)、開發(fā)新產(chǎn)品的一個(gè)重要途徑。但是,很多單片機(jī)愛(ài)好者在時(shí)常會(huì)失敗,怎樣才能正確進(jìn)行呢?下面就以為例,談?wù)劮磪R編的要點(diǎn)。

            1.怎樣正確獲取程序的目標(biāo)代碼

            要正確獲取程序的目標(biāo)代碼,首先要明確程序代碼的存放地點(diǎn)。的程序存儲(chǔ)器最大空間為64KB,在一個(gè)實(shí)際的應(yīng)用系統(tǒng)中,程序存儲(chǔ)器的分布情況可能有以下幾種:

            (1)只使用了片內(nèi)程序空間。而沒(méi)有使用片外的程序空間。

            其硬件特征為:/EA引腳接VCC;/PSEN引腳為空腳。

            這種情況比較簡(jiǎn)單,全部應(yīng)用程序都在單片機(jī)內(nèi)部的程序存儲(chǔ)器中,我們只要使用編程器將程序代碼讀出來(lái),保存為一個(gè)目標(biāo)代碼文件就可以了。要注意的是,有一些新型的單片機(jī)具有加密功能,如果進(jìn)行了加密,其中的程序代碼就是不能讀出。

            (2)沒(méi)有使用片內(nèi)程序空間,片外程序空間由單個(gè)存儲(chǔ)芯片構(gòu)成。

            其硬件特征為:/EA引腳接GND;/PSEN引腳接到一個(gè)存儲(chǔ)芯片上。

            這種情況下,全部應(yīng)用程序都在單片機(jī)外部的程序存儲(chǔ)器中,原則上我們只要使用編程器將程序代碼讀出來(lái),保存為一個(gè)目標(biāo)代碼文件就可以了。但要注意的是,這樣得到的并不一定是真正的目標(biāo)代碼,因?yàn)?,為了防止程序代碼被讀取、反匯編,很多設(shè)計(jì)人員都采取跳接線的方法,將某些地址線跳接或?qū)⒛承?shù)據(jù)線跳接或?qū)⒌刂肪€、數(shù)據(jù)線都進(jìn)行跳接,從而保護(hù)自己的程序不被反匯編(參見下面四圖)。這樣一來(lái),我們從存儲(chǔ)器中讀取的就不是真正的程序目標(biāo)代碼,必須進(jìn)行某種變換,將其轉(zhuǎn)換為真正的程序目標(biāo)代碼,才能進(jìn)行反匯編。


          上一頁(yè) 1 2 3 下一頁(yè)

          關(guān)鍵詞: 51單片機(jī) 反匯編

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();