Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中怎麼破解游戲之修改金幣數

Android中怎麼破解游戲之修改金幣數

編輯:關於Android編程

我們在玩游戲的時候總是會遇到一些東東需要進行購買的,但是我們可能又捨不得花錢,那麼我們該怎麼辦呢?那就是用游戲外掛吧!我們這裡說的是Android中的游戲,在網上搜索一下移動端游戲外掛,可能會找到一款叫做:八門神器.apk

其實這個軟件我下載安裝了,但是沒有什麼效果,不知道是不是我哪裡設置的有問題,但是我們這個應用也是有很多限制的,他必須要讓手機進行root(說實話,現在獲取root是很方便的一件事,如果你想玩游戲,並且想得到更多的東西,手機root是必須的,但是這個可能也可能會失去很多)。


我就當上面的那個應用不可靠,所以我們采用第二種方案了,反編譯游戲的apk,然後修改他的代碼,在打成apk,在進行這個像操作的同時,我們需要先做一個准備工作,就是了解一下相關知識和一些輔助工具,我們知道Android中的應用程序是:xxx.apk,其實這個apk就是一個壓縮文件,我們可以使用解壓軟件打開的。要想看到源碼的話,可能需要一些輔助工具:dex2Jar(將dex文件轉化成jar文件),jd-gui.exe(查看jar文件),ApkTool(反編譯apk,可以得到他的smali文件,同時可以進行編譯打包和簽名),這些工具網上都是可以下載到的,但是我這裡為了防止有些同學可能找不到正確的版本,導致操作失敗,很不開心,所以我就將這些工具都放到csdn中了。

http://download.csdn.net/detail/jiangwei0910410003/7346527


下面我們首先來通過一個簡單的Demo.apk來看一下反編譯的流程:

代碼很簡單,新建一個Android工程,Activity代碼如下:

package com.example.androiddemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView txt = (TextView)findViewById(R.id.txt);
		txt.setText(String.valueOf(1000000000));
		
	}

}


好吧,我們編譯運行吧,代碼很簡單吧!記得布局文件中添加一個TextView

然後我們將工程中等的bin目錄中的apk文件拷貝到出來開始反編譯:

第一步:首先得到apk中的classes.dex文件

使用WinRAR軟件打開apk,將其中的classes.dex文件解壓出來


第二步:通過classes.dex文件得到classes.jar文件

我們從上面下載的工具中,解壓Android反編譯文件,進入目錄中:

\

看到上面的標記文件夾,我們將上面得到的classes.dex文件拷貝到這個文件夾中,然後使用命令行將當前的路徑切換到這個文件夾目錄,然後執行命令:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHN0cm9uZz5kMmotZGV4Mmphci5iYXQgY2xhc3Nlcy5kZXg8L3N0cm9uZz48YnI+CjwvcD4KPHA+1rTQ0M3qw/zB7tauuvOjrM7Sw8fU2tXiuPbOxLz+vNDW0Lvhv7S1vbbgs/bSu7j2Y2xhc3Nlcy1kZXgyamFyLmphcs7EvP6jrNXiuPa+zcrHztLDx8/r0qq1xGphcs7EvP48L3A+CjxwPjxicj4KPC9wPgo8cD48c3Ryb25nPrXayP2yvTwvc3Ryb25nPqO6zai5/WpkLWd1aS5leGW5pL7fsum/tGphcs7EvP6jrLLpv7TUtLT6wus8L3A+CjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140515/2014051509030023.jpg" alt="\">

我們可以看到我們的Activity類的源代碼,當然我們這裡沒有進行擾碼操作的,所以代碼大體上都能看懂,只是會做一些代碼的優化,這個關於代碼的優化的過程,就是在Android編碼編譯成.dex文件的時候操作的


第四步:使用ApkTool工具進行反編譯Apk文件

通過上面下載的工具中解壓ApkTools.zip:

\


我們需要將我們上面編譯之後的apk文件拷貝到這個目錄中,並且需要將這個apk文件的名稱修改成123.apk,然後運行APKTool.cmd:如下界面:

\


我們看到這裡的每一步操作都說明的很清楚了,我們首先執行1,進行反編譯,反編譯成功之後我們會發現在文件目錄中出現一個APK文件夾,在這個文件夾中就是反編譯之後的內容了,我們找到MainActivity.smali文件\


關於smali文件,不了解的同學們可以自己去google一下,網上有很多的例子,他其實就是一個能夠被Android虛擬機讀取命令進行執行的文件,然後我們打開這個smali文件:

\


我們其實看這些代碼沒什麼難度的,如果你之前使用javap命令查看過java反編譯的代碼,這個和那個是差不多的,我們這裡主要來看一下我們設置TextView的顯示內容的代碼,就是最後一個標記中,我們看到了我們設置的內容是:“10000”,所以我們只要修改這個值,現在我們修改這個值為:“10”,然後保存這個文件。

這裡在補充一下上面的第一個標記中我們會看到有兩個int類型的變量,但是我們會有一個疑問,我們代碼裡面沒有用到int類型的變量呀?我們從變量下面的方法中可以看到,是setContentView和findViewById方法,其實我們知道Android中引用資源都是使用一個int類型的變量指定資源文件的。這裡我們要記得怎麼使用smali語法設置一個int變量的值(這個在後面會用到)


最後我們就可以使用上面ApkTools命令中的2進行編譯,這時候在Apk目錄中會多出一個build文件夾,這個是編譯之後的文件夾,然後我們在使用4命令,進行簽名包,執行完畢之後在build目錄中有簽名的apk了:

\

我們安裝這個包測試一下,看到顯示的是100。好吧,至此我們就成功的通過修改一個apk文件了。


好吧,上面的例子只是一個前奏,下面我們來看一下一個真實的案例吧:

哈皮妹-蘿莉 v1.2.apk

關於這個apk,其中的內容有點不干淨,正好趕到了最近政府在打壓,所以好多市場中都下架了,其實你可以直接在百度中搜這個應用的,但是要注意的是一定要是v1.2的,不然可能會不一樣,我擔心有些同學可能找不到正確版本的apk了,所以給出下載鏈接:

http://download.csdn.net/detail/jiangwei0910410003/7346875

我們先來安裝一下這個apk,看看效果吧!!一些男同學貌似很感興趣呀!但是我們得先干正事

\

我們點擊購物車圖標,會看到有購買金幣和鑽石的界面,系統默認是金幣為100,鑽石為0,我們將金幣改成10000,鑽石改成10,這樣我們就可以看到更多的東東了。


我們按照上面例子的步驟來進行操作,我們看源碼會看到一個類:

package com.qxshikong.mm.lolita.c;

public final class c
{
  private int a;
  private int b;

  public final int a()
  {
    return this.a;    
  }

  public final void a(int paramInt)
  {
    this.a = paramInt;
  }

  public final int b()
  {
    return this.b;    
  }

  public final void b(int paramInt)
  {
    this.b = paramInt;
  }
}
我們會看到這個類,關於如何找到這個類的,不要問我,我是找了很多次才找到的,這個沒有技巧可言的,我們知道這個代碼應該就是一個JavaBean,提供兩個屬性:一個是金幣數,一個是鑽石數,那麼下面我們反編譯這個apk,查看他的smali文件:

\

這裡修改的方法就是參照我們前面說到的例子中怎麼設置一個int類型的值


我們一定要通過上面的源碼文件的目錄找到指定的smali文件:

\


我們修改了smali文件之後保存,然後進行編譯打包,之後安裝打好包之後的apk(這個步驟在前面的案例中已經說過了),我們安裝簽名的apk,但是我們可能會遇到一個問題:

\


會涉及到簽名不一樣,但是包名一樣的問題(和沒有手機中之前的apk包沖突),這個很簡單,卸載後安裝即可,運行之後我們到購買界面查看:

n塊i霝w雖z瞗鷌n塊λk?糙铻楗╧y破解Android中apk的原理和步驟,當然並不是所有的游戲都能破解的,這也是我這裡為什麼要選擇這款應用的這個版本,這都是有原因的,我曾經用這種方法去破解不同版本的,比如是1.8版本的,結果失敗了!因為這裡面有一個很大的麻煩就是怎麼找到指定的smali文件,這個其實想找到真是超級難的,所以你們也不要多想去破解所以的游戲,當然你們也是可以嘗試的,如果可以的話,記得通知我,我也來看看,哈哈!!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved