Android 遊戲破解修改金幣

這裏是通過AndroidManifest.xml中的allowbackup屬性去盜取手機中存儲的信息,只要有信息存儲在本地都可盜取出來(前提是你能拿到手機)

爲什麼研究這個技術:1,應用市場上修改遊戲金幣的軟件很多,但是大概都需要root權限,所以就想能不能在不root的情況下修改金幣和血量,2預防被盜信息

原因:當AndroidManifest.xml中的allowBackup標誌爲true時,用戶即可通過adb backup和adb restore來進行對應用數據的備份和恢復,這可能會帶來一定的安全風險

首先先介紹介紹一下allowBackup這個允許adb backup通過usp連接手機,去備份到電腦上,在電腦上生成.ab的文件,但是我們還需要藉助一個工具來解析這個ab文
件這樣我們就能拿到任何一個在AndroidManifest.xml中設置allowbackup屬性爲true的app數據,再修改該數據後還原回去,這樣就實現了,修改金幣的目的

廢話不多說先上項目

首先這裏我選得是一個<魔塔大冒險>的這樣一個Android遊戲(爲啥選這個那,當初被虐的被)
我們可以反編譯去得到apk的信息

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="com.pt.MoTa.MyApplication">
  <meta-data android:name="agentid" android:value="2168-2173-79"/>
  <meta-data android:name="leancloud" android:value="xiaomi"/>
             <activity android:configChanges="keyboardHidden|orientation|screenSize"
                    android:label="@string/app_name"
                    android:launchMode="singleTop"
                    android:name="com.pt.MoTa.newMoTa"
                    android:screenOrientation="portrait"
                    android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
                 <intent-filter>
                     <action android:name="android.intent.action.MAIN"/>
                     <category android:name="android.intent.category.LAUNCHER"/>
                 </intent-filter>
             </activity>
  <service android:name="com.pt.gamesdk.common.MQTTService"/>
  </application>

我們可以看到這個並沒有allowbackup屬性,所以這裏我們需要自己添加上以後再重新打包簽名,可能簽名和之前不同,但是沒關係我們這裏只教改金幣

我們用數據線鏈接上手機以後,通過

第一步:使用adb backup -f applock.ab com.pt.MoTa.mi 進行數據的備份(別問我這個包名怎麼來的,自己反編譯找去)
adb backup [-system|-nosystem] -all [-apk|-noapk] [-shared|-noshared] -f <檔案名稱> [需要備份的應用包名]
詳解

[-system|-nosystem]
這個指令是告訴adb 在備份時是否要連同系統一起備份
如果將系統一起備份的話,當還原的時候會將系統一起還原,目前對非root用戶不會有太大影響,不過建議還是加上

2> -all
這個指令除非只是要備份單一APP 不然是一定要打上去的
這個是問你是否要備份全部的APP 若有加上-nosystem的指令
那麼他就只會備份你目前已經安裝上去的APP 而不會連繫統APP一起備份


3> [-apk|-noapk]
默認是-noapk 這個的意思是是否連安裝的APK一起備份
若爲-noapk 則只會備份APK的資料檔(像是遊戲存盤 設定 之類的)


4> [-shared|-noshared]
默認是-noshared 這個會問你是否連手機儲存空間或是SD卡的檔案一起備份
 
5>包名
既然都會反編譯了,獲取個包名應該對你來說不是啥問題吧

通過cmd控制檯調用adb backup -f applock.ab com.pt.MoTa.mi
會在手機上出現一個問你是否備份界面,並讓你輸入密碼,這裏爲了方便密碼我設爲空(不填)
會在生成一個applock.ab的文件,下面,我們還需要藉助一個工具來解析這個ab文件。
第二步:使用android-backup-extractor(abe)工具來解析ab文件
把 備份好的applock.ab移動到abe文件夾下
通過cmd  cbe>java -jar abe.jar -help就可以查看指定方法了

看到我們使用unpack參數來將ab文件轉化成tar文件:
java -jar abe.jar unpack applock.ab applock.tar

推薦個軟件,通過7z.exe這個軟件打開tar文件比較好,因爲這個可以直接修改

通過修改sp的文件中的值,達到修改血量的目的,以此類推我們可以修改其他app的值,db的文件也適用

通過7z這個軟件我們不用解壓就可以修改裏面的文件,然後通過
>java -jar abe.jar pack applock.tar applock.ab 反生成ab文件,
再通過adb命令adb restore applock.ab
還原到手機中就OK了

但是最後說兩句,想用這個技術盜取別賬號密碼的就別懂心思了,頂多能破解個手勢密碼,一般app的密碼都不會存在本地,都存在服務器



通過進一步的學習學會了另外一種查看apk資源文件的方法

我們下載apk,之後使用aapt查看他的AndroidManifest.xml內容:
aapt dump xmltree applock.apk AndroidManifest.xml > D:\demo.txt
注:我們在拿到一個apk的時候,如果想知道apk中的一些資源和配置信息,aapt命令是個不錯的選擇,同時,他能夠刪除apk中的一些資源,添加一些資源到apk中都是可以的。



題外話,各位最好學會反編譯和從新打包技術,這樣可以隨意破戒app的信息,不然一但allowBackup屬性設置爲false的話那就不能通過這個方法破解修改信息,曾經可以通過這個方法去獲取微信的聊天記錄,但是現在已被修復


附上截圖,不過不小新給改死了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章