突破灰色按鈕原理講解

         筆者在使用各種收費軟體的時候總想去找破解版,在找不到破解版的情況下,又嘗試各種破解辦法,去突破收費功能,相信大家跟我一樣,也經常這麼做。不過這樣做真心使我們的軟體行業一路沉淪下去,沒人再願意去努力做更好的軟體,做出來也被人很快去破解,得不償失。這裡還是希望大家都支援正版。當然這篇文章不是為了講解破解,只是想探討一下灰色按鈕的去除方法,該技術已然不是什麼祕密,像當年的灰色按鈕剋星之類早已實現,本著學習研究的態度,今天寫寫對灰色按鈕原理的一些看法。

         首先對灰色按鈕有以下幾種,如(1)圖所示,軟體常用普通禁用功能灰色按鈕,可以通過簡單的EnumChildWindows列舉子視窗,改變子視窗當然可用狀態,既將子視窗的Enable屬性改為true即可。(示例程式碼

                                                                                    
圖1)

                                                                                  
(圖2)

         第二種(圖2)所示,該圖來自瀏覽器軟體,這種灰色,對於列舉已然不可以去解除禁用,其實現原理為自定義CButton的子類,在子類中單獨進行處理WM_ENABLE事件即可防止解禁,作為商用共享軟體,作者們應該使用這種方式進行定義自己的控制元件。

         第三種(圖3)是為HTML中對於INPUT 或BUTTON控制元件使用disabled屬性進行限制,該限制非常容易進行突破,我們只需要在瀏覽器提供的除錯工具中去除Disabled屬性即可。往往很多開發者為了方便,所有限制只在前端進行處理,使得我們修改屬性值之後即可將按鈕啟用,資料依然可以處理。

                                                                                   
(圖3)

         對於第一種實現簡單,破解也簡單,第二種實現也不是特別複雜,但是不容易破解,推薦大家在寫軟體的時候可以使用這種方式,第三種按鈕是HTML程式碼中的,還是多說一句,希望後端開發者不要圖省事,少寫後端驗證。以上是本人對灰色按鈕實現及破解的一些看法,還望大家多多批評指正。