安卓系统如何破解游戏并更改金币数量

我们在玩游戏的时候,总会遇到一些需要订购的东西,但又舍不得花钱,那怎么办呢?那就是使用游戏插件!我们在这里谈论的是 Android 中的游戏。如果你在网上搜索手游插件,你可能会发现一个叫做:八门神器.apk

其实我下载安装了这个软件,但是没有任何效果。不知道是不是我的设置有问题,但是我们的应用也有很多限制。他必须root手机(说实话,现在就搞定)root是一个很方便的东西,如果你想玩游戏,想获取更多东西,手机root是必须的,但这可能会或可能会损失很多)。

我觉得里面的那种应用不靠谱,所以采用了第二种方案,反编译游戏的apk,然后改代码。输入apk后,我们需要同时进行这个操作。首先要做的是了解相关知识和一些辅助工具。我们知道Android中的应用是:xxx.apk。其实这个apk是一个压缩文件,我们可以用解压软件打开。如果想看源码,可能需要一些辅助工具:dex2Jar(将dex文件转成jar文件)、jd-gui.exe(查看jar文件)、ApkTool(反编译apk,可以得到他的smali 文件,同时编译、打包、签名),这些工具网上都有,不过我来这里是为了避免有些朋友可能找不到正确的版本,导致操作失败,很不爽,所以我把所有这些工具都放在了 csdn bingo 中。

我们先通过一个简单的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("100000000"); }}

好了,编译运行,代码很简单!记得在布局文件中添加一个TextView

然后我们复制项目bin目录下的apk文件开始反编译:

第一步:首先获取apk中的classes.dex文件

用WinRAR软件打开apk,解压里面的classes.dex文件

步骤二:从classes.dex文件中获取classes.jar文件

从我们从里面下载的工具中,解压Android反编译文件,进入目录:

游戏apk修改

看到里面标记的文件夹,我们把之前得到的classes.dex文件复制到这个文件夹,然后用命令行将当前路径切换到这个文件夹目录,然后执行命令:

d2j-dex2jar.bat classes.dex

执行命令后,我们会在这个文件夹中看到一个额外的classes-dex2jar.jar文件,这就是我们要的jar文件

第三步:通过jd-gui.exe工具查看jar文件,查看源码

游戏apk修改

我们可以看到我们的Activity类的源代码。当然,这里我们没有进行加扰操作,所以代码可以大致理解,但是会做一些代码优化。这个代码优化的过程就是Android代码编译成.dex文件时的Operate

第四步:使用ApkTool反编译Apk文件

从之前下载的工具中解压 ApkTools.zip:

游戏apk修改

我们需要将我们编译好的apk文件拷贝到这个目录下,并将这个apk文件的名字改成123.apk,然后运行APKTool.cmd:如下界面:

游戏apk修改

听说这里的每一步操作都太清晰了。我们先执行1反编译。反编译成功后,我们会发现文件目录下出现了一个APK文件夹。在这个文件夹中是经过反编译内容,我们找到了MainActivity.smali文件

游戏apk修改

关于smali文件,不了解的同学可以自己去谷歌一下。网上有很多例子。虽然是Android虚拟机可以读取和执行的文件,那么我们打开这个smali文件:

游戏apk修改

我们可能会看到代码并不难。如果你之前用过javap命令查看过java反编译的代码,和这个类似,我们主要看设置TextView的显示内容的代码,也就是在最后一个标签中,听说我们的内容设置为:“10000”游戏apk修改,所以我们只需要改这个值,现在我们把这个值改成:“10”,然后保存文件。

这里,在补充的第一个标记中,我们会看到有两个int类型的变量,但是我们会有疑问。我们不在代码中使用 int 类型的变量?从变量下面的方法可以看出,它是 setContentView 和 findViewById 方法。其实我们知道Android中所有引用的资源都是用一个int类型的变量来指定资源文件的。这里我们要记住如何使用smali语句设置一个int变量的值(这个会在前面用到)

最后,我们可以使用前面ApkTools命令中的2来编译了。这时候Apk目录下会多出一个build文件夹。这是编译后的文件夹,然后我们使用4命令对包进行签名。执行后在build目录下有一个签名的apk:

游戏apk修改

我们安装这个包来测试一下,看到显示100。好了,到此我们已经成功修改了一个apk文件。

好吧,上面的例子只是一个插曲,我们来看一个真实的案例:

哈皮妹-萝莉 v1.2.apk

关于这个apk,里面的内容有点不干净。我只是冲过去。最近政府在打压它,所以它已经从许多市场上移除了。其实你可以直接在百度上搜索这个应用,但是必须是v1.2,不然可能不一样,怕有的朋友找不到正确版本的apk,所以给个下载链接:

先安装这个apk看看效果吧! !有些男朋友好像太有兴趣了!但我们必须先做生意

游戏apk修改

我们点击购物车图标,您将听到一个订购金币和砖石的界面。系统默认为100金币和0钻石。我们将金币改为10000,钻石改为10,这样我们就能看到更多很多的东西。

我们按照前面反例的步骤操作,看源码会听到一个class:

package com.qxshikong.mm.lolita.c;public final class cprivate 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文件:

游戏apk修改

这里改的方法是参考我们上面例子中如何设置一个int类型的值

一定要通过之前的源文件目录找到指定的smali文件:

游戏apk修改

我们改了smali文件并保存,然后编译打包,然后安装打包好的apk(这一步在后面的案例中已经讲过了),我们安装签名后的apk,但是可能会遇到一个问题:

会涉及到签名不同,但是包名相同的问题(和之前手机里的apk包冲突)。这很简单。卸载后就可以安装了。运行后,我们会进入下单界面查看:

游戏apk修改

擦拭,我们发现有很多金币和砖石,然后我们就可以疯狂的操作了! ! !

但是在这里我们会发现一个问题。这里的数字和我们设置的不一样,我们发现是我们设置的数字的65536倍,也就是2的16次方。这个问题,我以为是改成之前的smali文件 十六进制的问题,于是改成十进制,结果还是一样,没办法,就结束了,这个问题不是主题在我们的文章中,我们只听到金币数量和砖块数量确实发生了变化。很高兴! !

总结:

本文的内容仅是讲解在Android中破解apk的原理和步骤。当然游戏apk修改,并不是所有的游戏都能破解。这就是我在这里选择此应用程序版本的原因。所有的激励措施都有。 ,我用这些技巧破解了不同的版本,比如1.8版本,但是都失败了!因为这里有一个大麻烦就是如何找到指定的smali文件。显然真的超级难找,所以不要尝试破解所有游戏。当然,大家可以试试。可以的话记得通知我,我也会看到的,哈哈! !

《Android应用安全防护与逆向分析》点击立即订购:京东淘宝

游戏apk修改

更多内容:点击这里

上一篇:当今书法市场的现状和未来前景
下一篇:没有了

欢迎扫描关注我们的微信公众平台!

欢迎扫描关注我们的微信公众平台!