2019年12月18日 星期三

為什麼總是不能完整破解軟體(full crack)

在學習逆向工程的時候,應該有不少人會嘗試想要破解一些軟體的序號驗證,不過常常都破解不完整,像是每次執行軟體後都需要重新輸入序號,雖然已經繞過了驗證序號程序,不過每次輸入序號也很麻煩,那麼如果能完整破解不是更有挑戰性?

在學習逆向工程中,都會去參考別人是如何破解軟體的,但是忽略了逆向的基礎與技巧,導致有很多逆向的細節不太清楚,那麼我們這次就要解決這個問題,就要先從軟體的驗證序號的架構說明。

軟體序號驗證邏輯


大多數的軟體在跳出輸入驗證序號的視窗前,會先判斷此軟體是否已被驗證成功,如果之前就有被驗證成功,就不跳出驗證序號的視窗,直接獲取之前驗證序號的資訊,然後直接進入驗證序號,最後再運行此軟體。

如果沒有被驗證成功的軟體,會跳出需要驗證序號的視窗,因此很多剛學習逆向的同學會透過字串分析,去分析驗證錯誤的訊息,然後繞過此驗證序號的結果,這邊會有一個問題,在運行完驗證序號程序後的結果的條件式判斷,進行修改,並不是修改驗證序號程序的主要函式,因此軟體重新執行後,還是會跳出驗證序號的視窗,所以要破解完整,就需要找出主要驗證序號的函式,才能真正的完整破解此軟體。