萬盛學電腦網

 萬盛學電腦網 >> 電腦入門 >> 教你如何反匯編破解、注冊機破解 電腦技術吧

教你如何反匯編破解、注冊機破解 電腦技術吧

反匯編有什麼用?一般是用來破解軟件。當然,如果你技術過硬的話 ,你可以反匯編大部分代碼,竊取別人的技術和秘密,可以自己學習,也可以販賣給別人!

引言:

如果你反匯編學的牛b,說明你的匯編也不差,而且還可以做些一些違|法的行為(lz不建議)。但是技術不成熟之前還是老實點,不然後果嚴重。

一、注冊機

大部分注冊算法的原理是:軟件或者用戶自己觸發了軟件的注冊模塊-》軟件跳轉到注冊認證模塊。-》彈出注冊窗口-》用戶輸入注冊名+注冊碼A,把它們存放在內存中。然後軟件的注冊碼驗證部分根據用戶輸入的注冊名生成正確的注冊碼B並和用戶輸入的注冊碼A做對比。如果結果為相同則注冊通過,並運行“注冊成功”後面的程序分支,比如解除各種軟件限制。如果不相同則提示“無效的注冊碼,請重新輸入!”或者“Invalid key!”等等警告。 

知道了原理,我們只要用SOFTICE和TRW2000等匯編調試軟件去做軟件的動態反匯編。來找到軟件注冊部分的入口(這個過程就不細說了,有興趣去看看匯編調試和軟件破解的資料) 

破解: 這時候後如果我們在軟件的注冊失敗的那段代碼前面加一個跳轉,說得容易理解一點就是:跳過軟件注冊碼驗證失敗後應該運行的分支,而將它轉到注冊成功的那個分支上。那麼這時候不管你輸入的注冊碼是對是錯,都會提示注冊成功。直接將它跳到注冊通過的那個程序分支上。這是一種破解方式。還有一種就是直接屏蔽注冊窗口,這個最簡單,在那段窗口代碼前面加一個跳轉指令。這個適合於那種頻繁彈出注冊窗口但軟件功能並沒有限制的注冊軟件 

注冊機: 通過反匯編和調試器跟蹤來得到軟件的注冊碼驗證部分的匯編代碼,然後根據它寫出來的逆向算法生成的注冊程序。就是注冊機了

內存注冊機:更簡單了,因為經過上面的步驟,你已經知道的那個軟件的注冊算法。知道它會在做注冊認證的時候將用戶輸入的注冊碼和正確的注冊碼做對比。把正確內存裡的注冊碼取出來就OK了。所以內存注冊機的使用方法都是:先開注冊機,用注冊機載入軟件。然後你隨便輸入一個注冊碼,按確定。軟件會提示注冊失敗,因為你的注冊碼是錯誤的。不過這個時候正確的注冊碼已經被內存注冊機截取到了。

二、Delphi語言

1、用PEID等工具查看程序有沒有加殼,一般都會有殼的,有專用脫殼工具的就省得麻煩了,直接用工具搞定。沒有的話就只能在Ollydbg等動態調試工具中手動脫殼了,建議先到Google或是百度上搜索一下有沒有前人脫類似殼的例子。具體過程不多說了。

2、運行脫殼後的程序,看有無自校驗,有的話要先解除。一般是在Ollydbg中下CreateFileA、GetFileSize、ReadFile等斷點來找到程序的自校驗處,可以同時開兩個Ollydbg來分別調試脫殼前後的程序,找到關鍵跳轉處修改之。對於一些變態的程序要考慮使用代碼Patch技術,即在殼解壓完進入OEP前一刻運行自己的patch代碼,此是後話。

3、標題中提到了Delphi程序,該是DeDe出場了,它強大的反編譯功能我無法用語言描述,用過的人都知道。用DeDe反編譯脫殼後的程序,如果不出意外很容易就能看到和Delphi源程序結構類似的匯編代碼。通過它很快就能確定各個菜單、控件的事件代碼,再在Ollydbg中相應處下斷,找出爆破點或是算法代碼。DeDe美中不足的是無法顯示函數調用(如A函數在程序中具體有哪些地方調用它,有些時候這樣的信息非常重要),還好有W32dsm這個靜態反匯編工具幫我們解決這個難題。要想實現快速破解Delphi程序,應該DeDe、Ollydbg、W32dsm三者結合起來使用。

三、匯編語言

一、數據傳輸指令 
─────────────────────────────────────── 
      它們在存貯器和寄存器、寄存器和輸入輸出端口之間傳送數據. 

copyright © 萬盛學電腦網 all rights reserved