2013年3月12日 星期二

Hacking: [轉錄] 軟體序號破解之原理。


軟體序號破解之原理。


作者:哈哈小熊│2009-11-24 13:56:11│贊助:4│人氣:4453
最近在看Left 4 Dead 2代,有人討論這遊戲防盜版的機制 損及一些正版玩家的權益,還有人宣稱無法破解。小弟有感而發來講一下什麼叫做無所不破。
首先講一下Razor_1911這個組織,如同Farlight,SKiDROW等破遍無數知名遊戲
Razor又算是其中存在最久的
最近的事蹟包括
2009-11-20 破解Left 4 dead 還幫原出版公司修正錯誤
2009-11-10 破Call of Duty:Modern Warfare2 ,連Stream都擋不住
2009-5-28  在模擬城市3發表前三週就破還幫他們修正bug
2008-12-7 在Grand Theft Auto Ⅳ發表五天前就破了,還把當時最強的SecuRom保護鎖也破掉
2007 破halo2 移到PC上也可執行
2006-10-14 戰地風雲2142正式發表5天前就又被破解
而為首的幾位還進過美聯邦監獄,可惜抓也抓不完,會破的人太多了,目前各種遊戲仍看的到Razor的身影。再來說破解的原理。(本篇不會教導如何破)
其實那些怪客,都有安裝或自行開發一些能直接控制CPU的指令集或使用組合語言
當一個軟體載入記憶體執行後,現在出現了序號輸入方塊,當我們打入字串後
這字串會經過加寫運算後,看看是否符合原計算規則,一樣就通過不一樣就失敗。
那些怪客或駭客因為裝了直接控制CPU指令的程式集,因為有辦法在上述程式執行過程中
用分段的方式來進行,最常見的就是設記憶體中斷向量
因為不管程式怎麼寫,一旦進入CPU執行後,都是拆成一段段非常小的指令
例如 MOV EAX AX 這種的
因為CPU細分後都是暫存器在運作,指令及指令的內容和運算元全都被分開放在各種功能不同的
暫存器內
當我們輸入使用者名:fuxxxxyou 此值為會被存入某一暫存器
然後會呼叫一支加密運算式,對此值做加減乘除或開自然對數運算,算出來的值
也會被放入CPU的另一個暫存器,然後兩者比較是否相同
在CPU比較的那零點零零零零零零秒裡,就觸發當時設定的中斷 
然後對那個放真正值的暫存器給反組譯
結果得到 例如 DE38-EF45-XA89-YU55這樣的字,這就是真正的對映fuxxxxyou 名的序號啦
重新輸入一次就過了。
因此有些知名工具軟體如 ultraxxxx,acdsxxxx,等 安裝時都是輸入已準備好的使用者名和相對應的序號就好了。
那像有些會檢查原版光碟的是怎破的呢?
其原理一樣,任何程式到CPU裡都是拆成 上千上萬上億個小指令片段
一旦要呼叫執行檢查光碟的那指令,把它改掉或跳過
就成了俗稱的免光碟檔了。
最近有幾款名著是利用網路windows live, or stream的方式來防堵盜版
但是沒有用的,一旦程式進入CPU後,把它呼叫另一支程式 或另一個檢查檔的那啟始點給
mark掉,不執行就好。
那有些甚至還會檢查遊戲程式有沒有被改過 
破的原理一樣,只是拖慢被破的時間而已。
那嘛所謂的序號產生器是怎做的?
這原理也跟上面講的差不多,就是去程式裡找 從開始輸入字串計算那行到結尾算出序號那段程式
給它擷出這段程式碼重新編譯成執行檔就完成了
可能大家會問破解真的很簡單嗎?
老實說你得有辦法看懂上億條指令在講什麼 你就有辦法"改程式了"
00009685 MOVE AX, EAX
00009786 ADD 0x867AF5 AX 
..........
熟練的人大概五分鐘就改好了...

沒有留言:

張貼留言