逆向編程是什么意思 反匯編與逆向編程的區(qū)別?
反匯編與逆向編程的區(qū)別?反匯編:一般情況下,只有編譯器根據(jù)高級(jí)語(yǔ)言生成的機(jī)器代碼可以直接在芯片上執(zhí)行,才被“解析”為人類可讀的匯編代碼(事實(shí)上,最早的計(jì)算機(jī)操作員有能力直接讀取機(jī)器代碼并編程,而且不需
反匯編與逆向編程的區(qū)別?
反匯編:一般情況下,只有編譯器根據(jù)高級(jí)語(yǔ)言生成的機(jī)器代碼可以直接在芯片上執(zhí)行,才被“解析”為人類可讀的匯編代碼(事實(shí)上,最早的計(jì)算機(jī)操作員有能力直接讀取機(jī)器代碼并編程,而且不需要轉(zhuǎn)換成匯編形式,這是計(jì)算機(jī)的普及和程序的規(guī)模,早期反匯編的目的是檢查編譯器生成的代碼的性能。
現(xiàn)在我們主要研究分析別人沒(méi)有源代碼的程序,比如病毒程序分析,系統(tǒng)漏洞挖掘,或者黑灰產(chǎn)業(yè)鏈上的抄襲。通過(guò)反匯編分析了該算法的功能、算法和邏輯。
拆卸實(shí)際上是一個(gè)相反的過(guò)程。在分析了別人的功能、算法和邏輯之后,我們可以根據(jù)開(kāi)發(fā)過(guò)程中的實(shí)際需要,重新開(kāi)發(fā)、添加補(bǔ)丁開(kāi)發(fā)、國(guó)防產(chǎn)品開(kāi)發(fā)等,例如,通過(guò)分析匯編代碼得到的算法可以用任何其他編程語(yǔ)言復(fù)制,逆向編程是逆向工程中的逆向編程,逆向編程一般是指利用其他編程語(yǔ)言對(duì)其他程序的功能進(jìn)行逆向分析,從而再現(xiàn)其功能。
逆向分析(Reverse Engineering)不僅是反匯編,而且針對(duì)不同的系統(tǒng)平臺(tái)、語(yǔ)言平臺(tái)和芯片平臺(tái)包含不同的內(nèi)容。例如反匯編基本上包括對(duì)各種芯片的反匯編(如8086、arm、C51等)
反匯編實(shí)際上屬于反編譯,反編譯包括從低級(jí)或中級(jí)到高級(jí)的各種語(yǔ)言的分析,如。Net平臺(tái)下反編譯是反編譯的一個(gè)分支,反編譯是實(shí)現(xiàn)逆向編程的必要步驟,這些都屬于IT領(lǐng)域的“逆向工程”。
怎樣學(xué)習(xí)匯編語(yǔ)言更容易?
匯編語(yǔ)言是一種面向機(jī)器的編程語(yǔ)言。在實(shí)際應(yīng)用中,它通常用于底層、硬件操作和要求較高的程序優(yōu)化。驅(qū)動(dòng)程序、嵌入式操作系統(tǒng)和實(shí)時(shí)運(yùn)行程序都需要匯編語(yǔ)言。
如何學(xué)好匯編語(yǔ)言?首先要有一定的理論知識(shí)儲(chǔ)備,如編譯原理、計(jì)算機(jī)原理、微機(jī)原理、體系結(jié)構(gòu)和教學(xué)體系等。其次,我們應(yīng)該閱讀更多的例子,編寫更多的調(diào)試匯編代碼。
雖然不同的硬件平臺(tái)和匯編語(yǔ)言不同,但它們離不開(kāi)數(shù)據(jù)傳輸、條件設(shè)置、控制傳輸、位移和位操作、特權(quán)指令、浮點(diǎn)和多媒體、偽操作等。
多年使用匯編語(yǔ)言的經(jīng)驗(yàn)是:代碼完整規(guī)范,盡量使用常規(guī)指令,棧和上下文的保護(hù)和恢復(fù)做得很好。
謝謝。