我为什么要学习C++反汇编
寫在開始
從6月7日開始到今天已經(jīng)有5天了,在這5天的業(yè)余時(shí)間(工作之余)里終于系統(tǒng)的完成了C++反匯編的大部分問題的學(xué)習(xí),今天寫篇總結(jié),算是對(duì)這幾天學(xué)習(xí)的總結(jié)。
首先我想說明的一個(gè)問題就是我為什么要花時(shí)間研究C++反匯編?
這事得從筆者遇到的一個(gè)問題開始說起,大約2周前我們項(xiàng)目做在開發(fā)過程中遇到了一個(gè)Crash的問題,由于只有客戶提供的一個(gè).dmp文件,我們只能從這個(gè)地方入手,說起來很奇怪,從C++代碼的角度根本看不出來問題,我找來了一個(gè)傳說中的公司的大牛,大牛就在我面前給我詳細(xì)的分析了一遍這個(gè)轉(zhuǎn)儲(chǔ)文件,感覺他看反匯編出來的代碼就像看C++源代碼一樣,看問題也會(huì)更透徹,這個(gè)問題分析結(jié)束了之后筆者覺得應(yīng)該在這方面稍微研究一下,于是有了最近的幾篇文章。
我是怎么研究的
說起匯編代碼,最開始接觸是上大學(xué)的時(shí)候,學(xué)校教的IBM-PC匯編語(yǔ)言,當(dāng)時(shí)覺得還成,用匯編寫些東西還算順利,后來大三以后在做在做嵌入式開發(fā)(ARM,DSP開發(fā)筆者都略懂)的時(shí)候也寫過一些匯編的代碼,那么為什么看C++反出來的匯編我突然看不懂了呢?
首先就是對(duì)不上號(hào),看到匯編代碼,不知道對(duì)應(yīng)的C++代碼應(yīng)該是什么樣子的,于是在這幾天里面我寫了很多的demo,?試圖找到兩者之間的對(duì)應(yīng)關(guān)系,包括:
1.???????函數(shù)調(diào)用
2.???????虛函數(shù)處理
3.???????類處理
4.???????This指針
5.???????虛表
6.???????參數(shù)傳遞
7.???????棧實(shí)現(xiàn)
…
終于把這兩者之間的對(duì)應(yīng)關(guān)系找到了,找到了這兩者的對(duì)應(yīng)關(guān)系以后,再去看反出來匯編感覺是有如神助,行云流水,不敢說全懂了,但是大部分已經(jīng)打通了。
總結(jié),建議和致謝
感謝大牛讓我見識(shí)到了C++反匯編有東西需要學(xué),其實(shí)學(xué)習(xí)這東西不是說一個(gè)人有多牛,重要的是你應(yīng)該根據(jù)自己的情況知道自己欠缺哪方面的知識(shí),并且知道如何去補(bǔ)上這些東西,如果有需要同樣知識(shí)的朋友,建議作代碼對(duì)比,個(gè)人覺得這是一個(gè)捷徑。如果對(duì)這方面有什么問題歡迎一起討論,共勉..
總結(jié)
以上是生活随笔為你收集整理的我为什么要学习C++反汇编的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web前端开发规范手册
- 下一篇: s3c2440移植MQTT