作為一個計算機學者,在使用某些軟件時常常需要用戶登錄,有時還會受到積分限制的困擾,令人煩惱,一生氣就想把他破解了,
以下是我使用十六進制編輯器進行軟件破解的原理思路和技巧,本文僅供技術交流,切莫進行惡意活動!!!
第一步使用工具進行簡單脫殼處理
多數軟件(尤其是利用高級語言JAVA之類的語言開發的應用),易於進行反匯編分析都由工具進行過加殼和代碼混淆處理,將待破解主程序添加到分析工具中,利用工具進行簡單的脫殼處理得到反編譯源碼進行分析

第二部尋找程序運行入口及相關兩變量
破解軟件主要手段就是修改其程序判斷條件,判斷條件決定着程序的各類需求功能,因此尋找相關變量是非常必要的,而其相關變量主要集中在程序入口部分,而且閱讀程序入口有助於理解整個程序框架

在上圖中我們看到,已經找到了程序入口和相關變量,文件路徑,登錄變量,版本,用戶積分變量,接下來就要對登錄變量和用戶積分變量進行下手
登錄修改
第三步分析登錄變量


找到變量定義和被賦值的地方,首先我們查看登錄變量定義的地方,登錄變量被賦值為false,我們將其永久更改為true,就可以逃過登錄功能,當然也可以找到登錄函數進行修改和刪除,但是操作太過繁瑣,更改控制變量相對比較簡單,何樂而不為呢


方法一首先嘗試傳統比較簡單的修改方式
選擇需要修改的類或成員,右鍵選擇編輯類,直接將登錄變量false改為true后進行編譯


在上圖中我們發現,編譯無法執行,原因是缺少運行依賴,我們添加其依賴后編譯保存即可破解登錄功能

方法二接下來我們介紹使用十六進制編輯器進行軟件破解
由於十六進制看着眼花,建議選擇要修改的為之后在進入十六進制編輯器


上圖所選陰影十六進制字符則對應其修改區域的同行代碼,由於十六進制代碼實則為二進制機器碼,且程序編譯平台為X86,所以箭頭所指十六進制數16則為要給變量所附的值
我們將其改為17,十六進制數17對應其true編譯種別碼,不要問我為什么,下圖是我的分析
我們將其改為17后進行保存,然后重新加載程序后查看修改位置,我們可以看到登錄變量已經被修改為true

之后還需要對其后登錄變量賦值代碼進行修改或刪除


修改完登錄變量后,我們再來修改用戶積分限制
積分修改
在使用十六進制編譯器修改積分變量時存在內存偏移和內存越界問題,原因在於對於變量申請空間的限制,自己計算內粗便宜太麻煩,所以采用修改IF指令(MSIL匯編格式)來對積分變量賦值


分析匯編指令
第24指令:將4字節整型(-128~127)數0送入堆棧(Evaluation Stack)中
第25指令:從堆棧中彈出值0並賦給jifenNum
所以我們修改第24條指令為 ldc.i4 0X12C ,將300賦值給積分變量后確定保存



之后將后序對積分變量賦值代碼段刪除,確保積分值永遠不變



上圖所選陰影十六進制字符則對應其修改區域的同行代碼段,將其刪除即可
結束
到此為止,我們就通過十六進制編輯器編輯十六進制(二進制機器碼)和通過修改匯編格式IL指令實現,跳過登陸限制和積分的各種限制
為期3小時的破解探索過程也算是告一段落
最后本文僅供技術交流,切莫進行惡意活動!!!
