寫幾個年代久遠的吧,當時還小,有些細節恐怕記得不那麼準。
軟盤鐳射加密
用燒紅的鐵針在磁碟上戳一下。燒紅是為了讓小孔平整,不至於劃傷磁頭。然後格式化這個磁碟,記錄下被標記成壞扇區的位置。找到小孔位置,然後把小孔的位置換算成註冊碼,隨軟盤一起賣給使用者。第一次執行需要輸入註冊碼。之後每次執行程式會到磁碟指定的位置找小孔來判定你有沒有鑰匙盤。
鑰匙盤上的小孔用常規的方法無法複製,因為它並不是資料。手動戳一個你也很難跟鑰匙盤一樣位置。隨便戳一個你又沒有註冊碼的生成演算法。屬於是一種有效,廉價又難纏的加密辦法。
至於為啥叫鐳射加密呢?因為正常來講這個小孔是用鐳射燒蝕的,個人開發者沒有這個裝置,就拿針戳一下。
Int3爭奪戰
在那個遙遠的年代,真實模式(Real mode)還是主流,OS(特指DOS)其實也沒比應用程式有更高的執行等級。你甚至可以在啟動之後把OS砍了,讓OS把佔用的記憶體吐出來,來滿足自身的記憶體需求。
記得Novell Netware就有這麼一個指令,可以在啟動之後砍掉DOS,自己獨佔系統。
當然砍是可以隨便砍的,砍完之後你的程式也沒法退出了,因為沒有OS接管之後的事了。
這種情況一直持續到使用NT核心的XP為止。
年紀大點的人可能還記得當年有個名震天下的病毒叫CIH,鬧的這麼厲害也是因為95/98裡提升許可權許可權容易的多。XP開始的NT核心是完整的保護模式(Protect mode),幾乎不給你這個機會了。
在這樣一個群雄逐鹿的環境下,病毒/防毒,加密/破解誰更厲害就是看誰更狠了。
int3就變成了一個加密/破解的兵家必爭之地。
int3是什麼呢?簡單來說就是可以設定斷點,CPU執行指令執行到這個位置就會停下來,呼叫一次int3。然後繼續執行剩下的指令。
這樣控制了int3就可以讓程式一個指令一個指令的執行,從而達到分析/破解/debug的目的。
也就是說誰控制了int3就是刀俎,控制不了就是魚肉了。所以各種除錯破解程式都是千方百計的爭奪int3的控制權,而加密程式則是千方百計的干擾別的程式用int3.
具體的各種爭奪手法差不多可以寫本書了,這裡就舉一個有趣的加密手法:
利用int3讓記憶體裡的程式倒序執行。或者說倒序才是正確的開啟方式。
本來第n條指令執行完畢之後應該執行第n+1條指令,加密程式利用int3在執行完第n條指令之後,把命令指標改成n-1,從而實現倒序執行。
靜態分析,記憶體裡的程式碼簡直狗屁不通。
動態跟蹤你就得去截int3。可你一篡改int3,程式就沒法倒序執行了,結果就更是狗屁不通了,從而達成防止破解的目的。
PSP的GTA破解
PSP版的GTA有個BUG:
具體來說就是啟動遊戲的時候會自動到卡上讀存檔,這個過程可能會記憶體溢位。
後來廠商發現了這個BUG,於是新版的GTA裡修復了這個問題,可是已經賣出去的GTA碟片你也沒法回收回來不是?
於是當這個BUG被公開之後,舊版的GTA盤片價格暴漲,到了一卡難求的地步。
PSP的電池破解
往電池的控制晶片裡寫入特殊的資料,在開機的時候完成破解。果然是漏洞無所不在啊。
Wii的破解
Wii剛開始出來是很難破解的一款主機。
雖然碟片是DVD,但又和普通的DVD不一樣。
後來有人發現一款LG的DVD-ROM可以用來讀取Wii的光碟,於是複製Wii光碟成為可能。
當然Wii主機是不會認這種刻錄的光碟的,解決辦法就是把一個PIC的微控制器焊在Wii光碟機的控制晶片上,利用控制晶片的DEBUG陣腳來劫持這個晶片,讓它把燒錄光碟識別成正常光碟。
而任天堂的反制措施是。。。。。。。
把這兩個引腳切掉,哼!我叫你焊!
而反反制措施則是。。。。。。
用高超的焊接技巧修復剪斷的針腳!像這樣!
能焊成這樣已經是鬼斧神工了,對自己的手有信心的人可以挑戰一下。
順便說一下,當年我焊了4~5臺吧,當然我可沒有圖上焊的這麼好,所以每次操作的時候都在心裡把任天堂上上下下問候一遍。
補充一下,能焊上本來就是挺難的事了,更難的在於由於焊點實在太小,強度很低。
比如圖上這樣,上面的線稍微動一下,下面可能就斷了。
我的辦法就是焊好之後在焊的地方用膠槍補一下,不過缺點是萬一沒焊好再修就很困難了。
寫幾個年代久遠的吧,當時還小,有些細節恐怕記得不那麼準。
軟盤鐳射加密
用燒紅的鐵針在磁碟上戳一下。燒紅是為了讓小孔平整,不至於劃傷磁頭。然後格式化這個磁碟,記錄下被標記成壞扇區的位置。找到小孔位置,然後把小孔的位置換算成註冊碼,隨軟盤一起賣給使用者。第一次執行需要輸入註冊碼。之後每次執行程式會到磁碟指定的位置找小孔來判定你有沒有鑰匙盤。
鑰匙盤上的小孔用常規的方法無法複製,因為它並不是資料。手動戳一個你也很難跟鑰匙盤一樣位置。隨便戳一個你又沒有註冊碼的生成演算法。屬於是一種有效,廉價又難纏的加密辦法。
至於為啥叫鐳射加密呢?因為正常來講這個小孔是用鐳射燒蝕的,個人開發者沒有這個裝置,就拿針戳一下。
Int3爭奪戰
在那個遙遠的年代,真實模式(Real mode)還是主流,OS(特指DOS)其實也沒比應用程式有更高的執行等級。你甚至可以在啟動之後把OS砍了,讓OS把佔用的記憶體吐出來,來滿足自身的記憶體需求。
記得Novell Netware就有這麼一個指令,可以在啟動之後砍掉DOS,自己獨佔系統。
當然砍是可以隨便砍的,砍完之後你的程式也沒法退出了,因為沒有OS接管之後的事了。
這種情況一直持續到使用NT核心的XP為止。
年紀大點的人可能還記得當年有個名震天下的病毒叫CIH,鬧的這麼厲害也是因為95/98裡提升許可權許可權容易的多。XP開始的NT核心是完整的保護模式(Protect mode),幾乎不給你這個機會了。
在這樣一個群雄逐鹿的環境下,病毒/防毒,加密/破解誰更厲害就是看誰更狠了。
int3就變成了一個加密/破解的兵家必爭之地。
int3是什麼呢?簡單來說就是可以設定斷點,CPU執行指令執行到這個位置就會停下來,呼叫一次int3。然後繼續執行剩下的指令。
這樣控制了int3就可以讓程式一個指令一個指令的執行,從而達到分析/破解/debug的目的。
也就是說誰控制了int3就是刀俎,控制不了就是魚肉了。所以各種除錯破解程式都是千方百計的爭奪int3的控制權,而加密程式則是千方百計的干擾別的程式用int3.
具體的各種爭奪手法差不多可以寫本書了,這裡就舉一個有趣的加密手法:
利用int3讓記憶體裡的程式倒序執行。或者說倒序才是正確的開啟方式。
本來第n條指令執行完畢之後應該執行第n+1條指令,加密程式利用int3在執行完第n條指令之後,把命令指標改成n-1,從而實現倒序執行。
靜態分析,記憶體裡的程式碼簡直狗屁不通。
動態跟蹤你就得去截int3。可你一篡改int3,程式就沒法倒序執行了,結果就更是狗屁不通了,從而達成防止破解的目的。
PSP的GTA破解
PSP版的GTA有個BUG:
具體來說就是啟動遊戲的時候會自動到卡上讀存檔,這個過程可能會記憶體溢位。
後來廠商發現了這個BUG,於是新版的GTA裡修復了這個問題,可是已經賣出去的GTA碟片你也沒法回收回來不是?
於是當這個BUG被公開之後,舊版的GTA盤片價格暴漲,到了一卡難求的地步。
PSP的電池破解
往電池的控制晶片裡寫入特殊的資料,在開機的時候完成破解。果然是漏洞無所不在啊。
Wii的破解
Wii剛開始出來是很難破解的一款主機。
雖然碟片是DVD,但又和普通的DVD不一樣。
後來有人發現一款LG的DVD-ROM可以用來讀取Wii的光碟,於是複製Wii光碟成為可能。
當然Wii主機是不會認這種刻錄的光碟的,解決辦法就是把一個PIC的微控制器焊在Wii光碟機的控制晶片上,利用控制晶片的DEBUG陣腳來劫持這個晶片,讓它把燒錄光碟識別成正常光碟。
而任天堂的反制措施是。。。。。。。
把這兩個引腳切掉,哼!我叫你焊!
而反反制措施則是。。。。。。
用高超的焊接技巧修復剪斷的針腳!像這樣!
能焊成這樣已經是鬼斧神工了,對自己的手有信心的人可以挑戰一下。
順便說一下,當年我焊了4~5臺吧,當然我可沒有圖上焊的這麼好,所以每次操作的時候都在心裡把任天堂上上下下問候一遍。
補充一下,能焊上本來就是挺難的事了,更難的在於由於焊點實在太小,強度很低。
比如圖上這樣,上面的線稍微動一下,下面可能就斷了。
我的辦法就是焊好之後在焊的地方用膠槍補一下,不過缺點是萬一沒焊好再修就很困難了。