斗羅大陸3龍王傳說單機版-1.3.0破解so簽名驗證

用到的工具:IDA,Android Killer,HxD,模擬器

什麼是簽名驗證?當修改apk然後進行簽名,安裝打開後出現盜版相關提示或出現閃退,那麼這個app大概就是加了簽名驗證,它會驗證現在的簽名跟它原本的簽名是否一樣如果不一樣就會顯示盜版提示或閃退,今天要破解的簽名驗證是放在so裡不一定每個開發者都把驗證放so裡也有可能放在別的地方就要靠自己去分析

開始教程
1.開啟Android Killer反編apk,然後再開IDA選擇fileopenF:\AndroidKiller_v1.3.1\projects\bb\Project\lib\armeabi\libcocos2dcpp.so路徑可能會跟我的不一樣看你把Android Killer放在哪,這時會出現一個彈窗點ok就行了讓IDA讀取so

2.IDA讀取so完後底下會顯示finished這時候就可以開始分析so了,按Shift+F12顯示出Strings window在按Ctrl+F搜尋signature選擇第二個,進去後雙擊Java_org_cocos2dx_cpp_NativeCallBacks_nativeInit會看到一堆代碼我都看不懂ಥ_ಥ可以按空白鍵會比較看得懂代碼怎麼執行

3.按空白鍵之後代碼會顯示上圖那樣,Ctrl+滑鼠滾輪可以縮放大小,滑鼠左鍵可以移動位置,然後拉到最底雙擊_ZN16SignatureManager11getInstanceEv

4.然後對
_ZN16SignatureManager11getInstanceEv
_ZN16SignatureManager11getInstanceEv
按住Ctrl+X會出現一個彈窗選第二個按ok,接下來出現的代碼就是關鍵點也是要修改的地方

5.showZhengbanCheckUI大概就是文章最上面那張"請支持正版!謝謝!"的彈窗提示,ok那我們修改代碼不要執行showZhengbanCheckUI這個彈窗提示就破解簽名驗證了,這裡提供兩種改法自己選一種
第一種
CMP R0, #0改成MOV R0, #1
(CMP我google了一下是比較指令那改成MOV固定#0為#1這樣就不會執行showZhengbanCheckUI,0是假1是真)
第二種
BNE loc_2F91AE改成BEQ loc_2F91AE
(BNE和BEQ都是數據跳轉指令,BNE是收到的值不等於0才會跳轉loc_2F91AE,BEQ是收到的值等於0才會跳轉loc_2F91AE)

6.我這裡用第一種,點一下CMP然後再到Hex View-1記下CMP R0, #0的16進位:0028、位置:2F91A2,那MOV R0, #1的16進位呢?
這裡提供一個ARM轉16進位的網站:http://armconverter.com
把MOV R0, #1貼上去按Convert按鈕會出現Conversion Successful!就是轉換成功的意思,滑鼠滾輪往下滑複製Thumb HEX的0120這就是MOV R0, #1的16進位

7.然後開啟HxD修改so因為IDA只用於分析,打開so的位置F:\AndroidKiller_v1.3.1\projects\bb\Project\lib\armeabi\libcocos2dcpp.so,這是我的路徑你們的可能會跟我不一樣雖然在第1.說過了還是在講下,打開libcocos2dcpp.so後按Ctrl+G把剛剛第6.記的位置2F91A2貼上,這時會看到CMP R0, #0的16進位0028,修改成0120也就是MOV R0, #1的16進位改好按Ctrl+S保存,HxD就可以關了

8.lib\armeabi裡會多出一些IDA讀取so時新增的一些檔案,IDA關掉時選擇最後一個那些檔案就會消失了,如果還有殘留就確認上面紅框裡的檔案是否都刪除,都刪除了就可以編譯出來看效果,如果不刪呢?我也不知道自己試一試,反正把apk本身沒有的東西刪掉就對了

9.破解成功!沒有彈出"請支持正版!謝謝!"的彈窗提示了
_________________________________

教程到此結束,分享請註明出處