多數軟件(尤爲是利用高級語言JAVA之類的語言開發的應用),易於進行反彙編分析都由工具進行過加殼和代碼混淆處理,將待破解主程序添加到分析工具中,利用工具進行簡單的脫殼處理獲得反編譯源碼進行分析框架
破解軟件主要手段就是修改其程序判斷條件,判斷條件決定着程序的各種需求功能,所以尋找相關變量是很是必要的,而其相關變量主要集中在程序入口部分,並且閱讀程序入口有助於理解整個程序框架編輯器
在上圖中咱們看到,已經找到了程序入口和相關變量,文件路徑,登陸變量,版本,用戶積分變量,接下來就要對登陸變量和用戶積分變量進行下手函數
找到變量定義和被賦值的地方,首先咱們查看登陸變量定義的地方,登陸變量被賦值爲false,咱們將其永久更改成true,就能夠逃過登陸功能,固然也能夠找到登陸函數進行修改和刪除,可是操做太過繁瑣,更改控制變量相對比較簡單,何樂而不爲呢工具
選擇須要修改的類或成員,右鍵選擇編輯類,直接將登陸變量false改成true後進行編譯lua
在上圖中咱們發現,編譯沒法執行,緣由是缺乏運行依賴,咱們添加其依賴後編譯保存便可破解登陸功能spa
因爲十六進制看着眼花,建議選擇要修改的爲以後在進入十六進制編輯器blog
上圖所選陰影十六進制字符則對應其修改區域的同行代碼,因爲十六進制代碼實則爲二進制機器碼,且程序編譯平臺爲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小時的破解探索過程也算是告一段落