如何正確學(xué)習(xí)匯編語(yǔ)言?
網(wǎng)友解答: 匯編語(yǔ)言本身很簡(jiǎn)單,常用指令沒(méi)幾個(gè),語(yǔ)法規(guī)則也不多,看幾個(gè)小時(shí)資料似乎就明白了,但其實(shí)不然。匯編的背后是體系結(jié)構(gòu),是程序設(shè)計(jì)拋開(kāi)各種高層形態(tài)的最根本,最本質(zhì)的解釋。本人從業(yè)多
匯編語(yǔ)言本身很簡(jiǎn)單,常用指令沒(méi)幾個(gè),語(yǔ)法規(guī)則也不多,看幾個(gè)小時(shí)資料似乎就明白了,但其實(shí)不然。匯編的背后是體系結(jié)構(gòu),是程序設(shè)計(jì)拋開(kāi)各種高層形態(tài)的最根本,最本質(zhì)的解釋。
本人從業(yè)多年,除了跟我一樣搞過(guò)很久安全的同學(xué),其余的沒(méi)有一個(gè)我認(rèn)為算是精通匯編。而我是怎么掌握匯編的呢 ?
1 早年用匯編手寫(xiě)病毒。比如處理指令重定位,是真的用匯編計(jì)算指令地址,push push call 實(shí)現(xiàn)函數(shù)調(diào)用。
2 長(zhǎng)期病毒木馬2進(jìn)制分析。分析明白各種 malware 的原理,實(shí)現(xiàn)查殺防。個(gè)別病毒,需要實(shí)現(xiàn)修復(fù)。
3 漏洞挖掘。fuzzer 發(fā)現(xiàn)漏洞,匯編級(jí)詳細(xì)分析,exploit 編寫(xiě),武器化利用,一條龍。
4 各種逆向分析。好的東西沒(méi)有代碼,IDA 里看就是了。
5 跟debuger 做朋友。從來(lái)看不上print 方式的bug定位。所有問(wèn)題在調(diào)試器里分析明白,絕不靠猜。
6 編譯器后端研究。什么指令選擇,指令調(diào)度,寄存器分配,全都研究一遍。
7 底層開(kāi)發(fā),操作系統(tǒng),設(shè)備驅(qū)動(dòng),虛擬化都走上一遍。X86很熟? ARM學(xué)一遍做對(duì)比。
歷經(jīng)這么多,終于敢說(shuō)學(xué)明白匯編了。
推薦如下的文檔,很基礎(chǔ)又相對(duì)全面的介紹了很多計(jì)算機(jī)常見(jiàn)問(wèn)題在匯編層面的解釋。
《Introduction to Computer Organization with x86-64 Assembly Language & GNU/Linux》
以上,希望對(duì)樓主有幫助
網(wǎng)友解答:本人從上世紀(jì)80年代就開(kāi)始從事軟硬件的編程,特別是經(jīng)歷了PC匯編和單片機(jī)匯編。
目前PC匯編肯定沒(méi)人再搞了,因?yàn)樵贒OS時(shí)代,PC匯編(實(shí)際多用宏匯編)還大有用途,但在windows時(shí)代后,匯編就已經(jīng)退出了舞臺(tái),只有反匯編搞逆向的人才使用和學(xué)習(xí)匯編和反匯編。
在單片機(jī)應(yīng)用中,隨著資源的擴(kuò)大,像ARM芯片用匯編幾乎不可能。
故在嵌入式領(lǐng)域,主要在小芯片的MCU上使用匯編,例如MVS51系列,PIC系列、AVR系列和DSP系列等。
當(dāng)然也有搞各類匯編的,實(shí)際他們也是在搞反匯編,即搞逆向工程。
所以在這個(gè)年代想學(xué)習(xí)匯編的都是有故事的人……至少是聽(tīng)過(guò)故事的人!
本人精通51匯編和反匯編,如果需要,可以在網(wǎng)上搜索菜農(nóng)的文章和帖子。