我為什么要學習C++反匯編


我為什么要學習C++反匯編

寫在開始

67日開始到今天已經有5天了,在這5天的業余時間(工作之余)里終於系統的完成了C++反匯編的大部分問題的學習,今天寫篇總結,算是對這幾天學習的總結。

首先我想說明的一個問題就是我為什么要花時間研究C++反匯編?

這事得從筆者遇到的一個問題開始說起,大約2周前我們項目做在開發過程中遇到了一個Crash的問題,由於只有客戶提供的一個.dmp文件,我們只能從這個地方入手,說起來很奇怪,從C++代碼的角度根本看不出來問題,我找來了一個傳說中的公司的大牛,大牛就在我面前給我詳細的分析了一遍這個轉儲文件,感覺他看反匯編出來的代碼就像看C++源代碼一樣,看問題也會更透徹,這個問題分析結束了之后筆者覺得應該在這方面稍微研究一下,於是有了最近的幾篇文章。

我是怎么研究的

說起匯編代碼,最開始接觸是上大學的時候,學校教的IBM-PC匯編語言,當時覺得還成,用匯編寫些東西還算順利,后來大三以后在做在做嵌入式開發(ARMDSP開發筆者都略懂)的時候也寫過一些匯編的代碼,那么為什么看C++反出來的匯編我突然看不懂了呢?

首先就是對不上號,看到匯編代碼,不知道對應的C++代碼應該是什么樣子的,於是在這幾天里面我寫了很多的demo, 試圖找到兩者之間的對應關系,包括:

1.       函數調用

2.       虛函數處理

3.       類處理

4.       This指針

5.       虛表

6.       參數傳遞

7.       棧實現

終於把這兩者之間的對應關系找到了,找到了這兩者的對應關系以后,再去看反出來匯編感覺是有如神助,行雲流水,不敢說全懂了,但是大部分已經打通了。

總結,建議和致謝

感謝大牛讓我見識到了C++反匯編有東西需要學,其實學習這東西不是說一個人有多牛,重要的是你應該根據自己的情況知道自己欠缺哪方面的知識,並且知道如何去補上這些東西,如果有需要同樣知識的朋友,建議作代碼對比,個人覺得這是一個捷徑。如果對這方面有什么問題歡迎一起討論,共勉..

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM