反編譯與反匯編
    我們都曾經(jīng)用過盜版的軟件,都看過盜版的VCD,也都聽過盜版的CD。但是,有沒有人知道,那些“盜版商”是如何盜版(正確地說用該叫做“破解”)的呢?下面,我們就來了解一下,他們是如何在正版載體之上所作的手腳!
深入了解計算機的人應(yīng)該都知道,現(xiàn)在軟件破解專家和“盜版商”慣用的(準(zhǔn)確地說應(yīng)該是唯一的)途徑來破解媒體的手段,就是———“反編譯”和“反匯編”!
   何為“反編譯”和“反匯編”?這也許是大家最關(guān)心的問題,也是大家最不明白的問題。下面我將做出詳細(xì)講解。
  反編譯是一個將目標(biāo)代碼轉(zhuǎn)換成源代碼的過程。大體上的定義是:目標(biāo)代碼是一種用語言表示的代碼,這種語言能通過實機或虛擬機直接執(zhí)行。他是一個把程序“反寫”的過程,但是,反編譯只能反寫程序的分支,他不可以反寫整個程序。打個比方,比如一個程序比作一棵大樹,而反編譯只能反寫樹枝,卻不能反寫樹干。那么,一個程序只反寫了樹枝是沒有用的。因為,程序的運行,本身要靠程序的主干來調(diào)入程序各個部分。所以,盜版商還應(yīng)該反寫主干。這就要用到另一個王牌殺手——反匯編。當(dāng)一個程序的分支都被反編譯以后,這個程序基本上就是你自己制作的了,你是很了解他的特性的。這樣,用反匯編編譯程序主體,再把已編譯好的程序分支調(diào)入程序主體,從而找到漏洞。其實,這里只需要用到這個軟件的一個函數(shù)值,因為,函數(shù),大家都知道,給X一個值,就有一個唯一的Y與之對應(yīng)的。這樣,反復(fù)試幾次,此軟件的漏洞就暴露無遺。這樣,你就完成了一個軟件的破解工作。
   聽起來,十分簡單,但是,如果真的要讓你做一下,那可不是一件簡單的事情。
   現(xiàn)在市面上買的盜版的 Windows系列產(chǎn)品,基本上都是盜版。很大的軟件,比如:Windows系列、Linux系列等等產(chǎn)品。都需要幾十人,甚至上百人一起破解。因為,他們這些軟件的加密技術(shù)實在是“天衣無縫”,但是,請永遠(yuǎn)記住這句話:沒有沒有漏洞的軟件、沒有沒有漏洞的系統(tǒng)。
  基本上,破解Windows產(chǎn)品的方法如下:
  軟件商為了防止自己的軟件被非法安裝和反匯編,采取了很多辦法,如安裝盤的磁道加密、加密狗等技術(shù),這些技術(shù)的發(fā)展促進(jìn)了軟件業(yè)的健康發(fā)展。
  現(xiàn)在廣泛使用的限制非授權(quán)安裝的方法是采用CDKEY校驗法。例如在安裝Windows 95/98/NT時,安裝程序要求用戶輸入CDKEY,以確定用戶是否是授權(quán)安裝。只有輸入的CDKEY正確時,安裝程序才會繼續(xù)執(zhí)行安裝。這個流程的一大漏洞是程序判斷CDKEY是否有效的代碼段中必然有一個跳轉(zhuǎn)語句,且該代碼段中必包含CDKEY。解密者可反匯編安裝程序的二進(jìn)制代碼,然后截取有跳轉(zhuǎn)語句的部分加以分析,從而解密。事實上,一些解密技術(shù)資料中,均采用這一思路取得CDKEY。
   安裝Windows系列產(chǎn)品唯一的驗證就是序列號(CDKEY)這樣,破解了他,你就等于破解了Windows。
  所以,軟件盜版商,就贏得了巨大的利潤。
  所以,我們應(yīng)該好好學(xué)習(xí)反匯編、反編譯,來阻塞軟件破解商的破解道路,使正版軟件能夠真正的為我們服務(wù)!