回覆列表
  • 1 # 劉慧穎A

    C語言直接執行,組合語言需要對原始碼進行彙編成機器認識後才能執行,而需要程序升級修改的時候,就需要反彙編才能修改原始碼,,

  • 2 # 雲飛龍965

    反彙編是指將非彙編目的碼轉變成彙編的過程.

    你所看到的反彙編程式碼,其實是由C編譯器將C語言程式碼直接編譯成彙編程式碼的,並非由機器碼反彙編成彙編.

    這樣做在除錯階段有非常大的意義,比如你寫的程式碼,語法上一點錯誤都沒有,但是邏輯上有了錯誤,往往你要找到這個邏輯錯誤是很難的,這時候在除錯的時候單步執行反彙編程式碼就變的很有意義了,給你舉個例子:將變數十進位制碼轉成16進位制,十進位制碼放在變數tmp中,如果程式碼這樣寫:

    d=(tmp>>4)*10+tmp&0x0F;

    假如你輸入tmp變數儲存的是十進位制的23(儲存為0x23),然後使用上句準換為16進位制,那麼d應該等於0x17,但實際上程式碼的結果卻是0x07,原因就是雖然上句程式碼語法上沒有錯誤,但是邏輯上有錯,運算子"+"的優先順序是大於運算子"&"的,這就造成了運算結果出錯,結合反彙編程式碼可以很容易查出這類錯誤.

    反彙編和C程式碼中都可以設定斷點,但除錯反彙編可以獲得更高的精度,因為一句C程式碼可能有數十條彙編程式碼組成,在C程式碼單步執行一次,可能執行了十幾條彙編程式碼,而在反彙編介面單步除錯,每次只執行一句彙編程式碼(濫竽充數一下)

  • 3 # bigbigeasy

    機器碼和彙編是一一對應的,所以可以反彙編。

    c的話實際編譯中是先變編譯成彙編,然後才是機器碼。反向編譯基本不可能了。

  • 4 # 閒人老盧

    我1993年畢業時的畢業設計就是基於SCO Unix作業系統的C語言反編譯器,因此而獲得上海交大計算機系優秀畢業設計獎。我們一共三個同學,我負責編碼,另一個負責c語言庫函式識別模組,還有一個負責測試。這兩位同學都在美國。在那之前,我和另一個同學也設計了一個自定義高階語言的編譯器。反編譯系統設計的難點在於反最佳化和庫函式識別。由於編譯器在編譯時進行了大量的最佳化,因此會導致反編譯出來的結果難以看懂。當然,反彙編是反編譯的預處理過程,這個沒有什麼技術含量。

  • 5 # JarmingFly

    此彙編非彼彙編啊兄弟

    組合語言是一門語言

    反彙編這個詞裡面的彙編 只是一個動作 並不是代表組合語言。

    C需要預編譯 編譯 彙編 連結4個步驟,這裡的彙編表示的是一個過程,就是把組合語言轉換為機器語言的過程,不是組合語言。

    反彙編就是將這個過程逆向而已!

    反C是什麼操作,C語言是個名詞,咋還能反。題主多學習學習。

  • 中秋節和大豐收的關聯?
  • 為什麼塗泡過白朮的白醋在臉上會發紅?