發表文章

怪物卡車2-3.58 dex驗證破解

圖片
用到的工具:AndroidKille,IDA,HxD,Notepad++,Android設備一台 Apk下載地址: https://ppt.cc/fhkjZx 這是未修改的可以下載練習 1.首先檢查apk是否有簽名驗證,開啟AndroidKille使用它裡面的簽名工具,簽名完成後安裝sign.apk,通過這項步驟可以看到沒有簽名驗證可以正常開啟遊戲,為什麼要做這項檢查?因為修改apk完幾乎都是要重新簽名不然無法安裝,如果開發者有加簽名驗證防護然後當apk被重新簽名開啟app的時候就會閃退或跳出盜版提示 2.這時用AndroidKille反編apk在smali資料夾裡添加或修改代碼,回編譯安裝顯示上圖遊戲啟動畫面就閃退了,猜測開發者加了dex驗證只要dex被改動開啟app就閃退 #dex反編譯後就是smali資料夾,smali資料夾回編 譯 後就是dex #就算你沒有改動dex,反編和回編dex這兩個操作 在有dex驗證的apk裡也 會閃退 3.Ok在上面的簽名驗證和dex驗證的兩項檢查發現該遊戲加了dex驗證現在開始來破解,複製apk反編後的路徑F:\AndroidKiller_v1.3.1\projects\com.tophotapp.madtruck2\Project 4.開啟Notepad++按Ctrl+F,貼上剛剛的路徑然後搜classes.dex,看看有哪些檔案調用classes.dex,可以看到有兩個jar和底下兩個簽名apk時生成的 CERT.SF 、 MANIFEST.MF這個都不是我們要改的,有Android逆向修改so經驗的應該都知道從so開始找關鍵因為驗證或者是遊戲的資源幾乎都在so裡, 照著路徑把libgame.so複製到桌面 5.開ida把桌面的libgame.so拖進去,底下出現finished就可以開始找關鍵了,按Shift+F12叫出字符串在按Ctrl+F搜classes.dex,把搜到的結果點進去 6.D4340記住這個地址 BNE的16進位:05 D1 BL的16進位:13 F0 D8 FC 7.打開HxD按Ctrl+G搜D4340 BNE改BEQ BNE:05 D1改05 D0 BL改空指令 BL:13

沙漠逃生(殭屍大亂鬥)-1.0修改金幣、彈藥無限和去騰訊廣告教程

圖片
用到的工具:AndroidKille,模擬器 apk下載連結: https://ppt.cc/fR6v7x 這是未修改的看完文章可以下載練習 遊戲一打開會出現4399的logo還有廣告,可以用我之前錄的幹掉啟動logo教程來繞過直接進入遊戲。 賽爾號之勇者無敵2-6.1.5幹掉咪咕遊戲啟動Logo和破解內購01 一.去騰訊廣告 1.很簡單,刪掉這段騰訊聲明SDK組件然後保存,廣告就幹掉了 二.金幣無限 2.遊戲一開始給了550金幣,550金幣的16進位是0x226到AndroidKille搜索看看 3.搜到了一個結果,const/16 v2, 0x226就是給玩家550金幣的地方可以通過這裡進行修改,可是花費金幣的時候金幣會一直扣掉,我的目的是要無限不管怎麼花都不會扣錢,照著上面紅線路徑找到getGold()I方法 4.在getGold()I方法裡的return v0上面添加const v0, 0xf423f固定金幣為999999然後底下的return v0會一直返回這個數這樣就達到無限的效果不管怎麼花都不會減少,記得保存 三.彈藥無限 5.當彈藥用完的時候會出現提示"xxx已經用完,請及時補充"搜索這個提示記得轉換成U碼,看到提示上面有個getUse_count()I,google的翻譯是得到使用計數猜測是跟彈藥數量有關 6.照著路徑找到getUse_count()方法然後也是跟金幣一樣添加const v0, 0xf423f底下的return v0會一直返回999999,記得保存然後編譯出來看效果 7.修改成功 _________________________________ 教程到此結束,分享請註明出處

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

圖片
用到的工具:IDA,Android Killer,HxD,模擬器 什麼是簽名驗證?當修改apk然後進行簽名,安裝打開後出現盜版相關提示或出現閃退,那麼這個app大概就是加了簽名驗證,它會驗證現在的簽名跟它原本的簽名是否一樣如果不一樣就會顯示盜版提示或閃退,今天要破解的簽名驗證是放在so裡不一定每個開發者都把驗證放so裡也有可能放在別的地方就要靠自己去分析 開始教程 1.開啟Android Killer反編apk,然後再開IDA選擇file ➜ open ➜ F:\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這樣就不會執行s

Happy Glass-1.0.14修改金幣和去廣告教程

圖片
用到的工具:dnSpy,Android逆向助手,模擬器 最近想改個遊戲增強android逆向實戰經驗,於是就從Google play的熱門遊戲中挑了一款名叫Happy Glass解謎類遊戲,看了看是Unity3D開發的,Unity3D我沒有開發經驗逆向的經驗也少,所以過程花了好多時間原因都在我不知道怎麼改(┬_┬),不過沒關係最終還是把金幣改了還有幹掉廣告 開始教程! 1.首先把apk改成zip,然後把assets/bin/Data/Managed/Assembly-CSharp.dll這個dll拖到桌面 2.開啟dnSpy打開剛剛提取出來的Assembly-CSharp.dll,搜索coin開啟get_CoinMultiplier方法然後在代碼中點一下右鍵選擇"編輯IL指令" 3.修改序號3的數看自己想改多少,不過要注意最多只能到7位數如果超過會出問題,改好後按確定 4.點擊保存然後會跳出一個彈窗按確定就行了,ok到這裡從dll修改金幣就完成了 5.接下來是幹掉廣告非常簡單,從zip把classes.dex拖到桌面 6.開啟Android逆向助手選擇"反編譯dex"然後把桌面的classes.dex拉進去點擊底下的操作這時桌面會出現classes資料夾等反編譯完成在動它 7.反編完成後打開classes資料夾,刪掉com裡的applovin,遊戲就是使用了這家的廣告裡面放的都是跟廣告相關的檔案所以把整個applovin資料夾刪掉廣告就不會出現了 8.把classes資料夾拉到Android逆向助手"重打包dex"桌面那個未修改的dex會自動被覆蓋掉,重打包dex完後把桌面上改好的classes.dex還有Assembly-CSharp.dll拉回zip裡進行覆蓋,zip改回apk拉到Android逆向助手簽名其他檔案都可以刪掉了留下那個改過還有簽名過的sign.apk 9.開模擬器看效果,在遊戲的第一關結束後會有一個輪盤獎勵在這一關它默認都會轉到50我看過代碼了,上面改的2000000會乘以50所以如果你跟我改的一樣這裡就是1億,廣告也幹掉了那些要看廣告獲得獎勵的按鈕也會無

Android逆向-購買失敗改為購買成功

圖片
這個本來沒發教程,因為我覺得挺簡單的收到這個訊息就來寫下教程 用到的工具:AndroidKille,jadx,模擬器 apk下載連結: https://ppt.cc/fNRwXx 1.打開AndroidKille反編apk,卡在apk源碼反編不出來這個沒關係關掉AndroidKille重開 2.剛剛那個源碼反編不出來就只是無法查看java不引響修改smali代碼,這個app就只有一個頁面所以就先從主activity開始看 3.smali代碼比較難看懂想看java怎辦?可以使用jadx這款工具把apk拖進去就能看java了,這個app默認購買是跳轉到失敗代碼那我們修改那個判斷不要讓它跳轉到失敗,讓它往下走執行成功的代碼 4.回到AndroidKille修改smali代碼找到那個if判斷,在MainActivity.smali找不到if判斷我們看到它底下執行了MainActivity$1.smali跟過去看看 5.在MainActivity$1.smali的onClick方法裡找到了if判斷這裡我提供三種改法自己選一種 一.刪掉if判斷 二.eqz改nez (eqz的意思是等於0就跳轉,nez的意思是不等於0才會跳轉) 三.在if判斷上面添加const v0,0x1 6.這裡我是用第三種,v0它默認收到的值是0然後eqz等於0就跳轉到:cond_0執行失敗代碼,那在if判斷上面添加const v0,0x1讓v0收到的值為1這樣就會執行成功代碼不會跳到失敗了,記得保存然後回編 7.回編的時候發生錯誤,照著路徑找到styles.xml 8.刪掉第7行還有第8行然後保存回編,就完成了 9.開模擬器看效果 _________________________________ 教程到此結束,分享請註明出處