反編譯與反彙編

    我們都曾經用過盜版的軟體,都看過盜版的VCD,也都聽過盜版的CD。但是,有沒有人知道,那些“盜版商”是如何盜版(正確地說用該叫做“破解”)的呢?下面,我們就來了解一下,他們是如何在正版載體之上所作的手腳!

深入了解計算機的人應該都知道,現在軟體破解專家和“盜版商”慣用的(準確地說應該是唯一的)途徑來破解媒體的手段,就是———“反編譯”和“反彙編”!

   何為“反編譯”和“反彙編”?這也許是大家最關心的問題,也是大家最不明白的問題。下面我將做出詳細講解。

  反編譯是一個將目標代碼轉換成原始碼的過程。大體上的定義是:目標代碼是一種用語言表示的代碼,這種語言能通過實機或虛擬機直接執行。他是一個把程式“反寫”的過程,但是,反編譯只能反寫程式的分支,他不可以反寫整個程式。打個比方,比如一個程式比作一棵大樹,而反編譯只能反寫樹枝,卻不能反寫樹幹。那么,一個程式只反寫了樹枝是沒有用的。因為,程式的運行,本身要靠程式的主幹來調入程式各個部分。所以,盜版商還應該反寫主幹。這就要用到另一個王牌殺手——反彙編。當一個程式的分支都被反編譯以後,這個程式基本上就是你自己製作的了,你是很了解他的特性的。這樣,用反彙編編譯程式主體,再把已編譯好的程式分支調入程式主體,從而找到漏洞。其實,這裡只需要用到這個軟體的一個函式值,因為,函式,大家都知道,給X一個值,就有一個唯一的Y與之對應的。這樣,反覆試幾次,此軟體的漏洞就暴露無遺。這樣,你就完成了一個軟體的破解工作。

   聽起來,十分簡單,但是,如果真的要讓你做一下,那可不是一件簡單的事情。

   現在市面上買的盜版的 Windows系列產品,基本上都是盜版。很大的軟體,比如:Windows系列、Linux系列等等產品。都需要幾十人,甚至上百人一起破解。因為,他們這些軟體的加密技術實在是“天衣無縫”,但是,請永遠記住這句話:沒有沒有漏洞的軟體、沒有沒有漏洞的系統。

  基本上,破解Windows產品的方法如下:

  軟體商為了防止自己的軟體被非法安裝和反彙編,採取了很多辦法,如安裝盤的磁軌加密、加密狗等技術,這些技術的發展促進了軟體業的健康發展。

  現在廣泛使用的限制非授權安裝的方法是採用CDKEY校驗法。例如在安裝Windows 95/98/NT時,安裝程式要求用戶輸入CDKEY,以確定用戶是否是授權安裝。只有輸入的CDKEY正確時,安裝程式才會繼續執行安裝。這個流程的一大漏洞是程式判斷CDKEY是否有效的代碼段中必然有一個跳轉語句,且該代碼段中必包含CDKEY。解密者可反彙編安裝程式的二進制代碼,然後截取有跳轉語句的部分加以分析,從而解密。事實上,一些解密技術資料中,均採用這一思路取得CDKEY。

   安裝Windows系列產品唯一的驗證就是序列號(CDKEY)這樣,破解了他,你就等於破解了Windows。

  所以,軟體盜版商,就贏得了巨大的利潤。

  所以,我們應該好好學習反彙編、反編譯,來阻塞軟體破解商的破解道路,使正版軟體能夠真正的為我們服務!!