我们在玩游戏的总会遇到一些东西需要购买,但是,我们可能要花钱,那么我们应该怎么办呢?这与游戏的插。我们在这里谈论的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来看一下反编译的流程:

代码非常easy,新建一个Androidproject,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");
} }

好吧,我们编译执行吧,代码非常easy吧。记得布局文件里加入一个TextView

然后我们将project中等的bin文件夹中的apk文件复制到出来開始反编译:

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

使用WinRAR软件打开apk,将当中的classes.dex文件解压出来

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

我们从上面下载的工具中,解压Android反编译文件。进入文件夹中:

看到上面的标记目录。我们将上面得到的classes.dex文件复制到这个目录中,然后使用命令行将当前的路径切换到这个目录目录,然后运行命令:

d2j-dex2jar.bat classes.dex

运行完命令之后,我们在这个目录中会看到多出一个classes-dex2jar.jar文件,这个就是我们想要的jar文件

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

我们能够看到我们的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。看看效果吧!

!一些男同学貌似非常感兴趣呀!可是我们得先干正事

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlhbmd3ZWkwOTEwNDEwMDAz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

我们点击购物车图标,会看到有购买金币和钻石的界面,系统默认是金币为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包冲突),这个非常easy,卸载后安装就可以,执行之后我们到购买界面查看:

擦,我们发现金币和钻石多了好多呀,那么我们就能够疯狂的操作吧!。!

可是这里我们会发现一个问题,这里的数量和我们设置的不一样,并且我们发现是我们设置的65536倍,是2的16次方,这个问题。我以为是上面smali文件里改动成十六进制的问题,所以我又改成十进制的。结果还是一样,没办法了,不就结了,这个问题不是我们这篇文章的主题。我们仅仅要看到了金币数和钻石数确实被改动了。

好开心呀!

总结

本文的内容仅仅在于解说怎样破解Android中apk的原理和步骤,当然并非全部的游戏都能破解的。这也是我这里为什么要选择这款应用的这个版本号,这都是有原因的,我以前用这样的方法去破解不同版本号的。比方是1.8版本号的,结果失败了!

由于这里面有一个非常大的麻烦就是怎么找到指定的smali文件,这个事实上想找到真是超级难的。所以你们也不要多想去破解所以的游戏,当不过,你也可以尝试。假设我们可以做到这一点,通知我记得。我要看看,哈哈。!

版权声明:本文博主原创文章,博客,未经同意不得转载。

Android变化如何破解几场金的更多相关文章

  1. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  2. Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  3. [Android Pro] android root权限破解分析

    许 多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简 单及安全的,破解Root权限的原理就是在手机的/s ...

  4. Android 系统 root 破解原理分析 (续)

    上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...

  5. Android App的破解技术有哪些?如何防止反编译?

     现在最流行的App破解技术大多是基于一定相关技术的基础:如一定阅读Java代码的能力.有一些Android基础.会使用eclipse的一些Android调试的相关工具以及了解一些smali的语法规范 ...

  6. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

  7. Android动态方式破解apk终极篇(加固apk破解方式)

    一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应 ...

  8. Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)

    一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用 ...

  9. Android应用反破解的思路

    一个Android应用要被破解,要经历:反编译->分析代码->重新编译打包的过程,反破解的思路也是从在这三个步骤上做文章: 1, 寻找反编译工具的缺陷,通过阅读其源码或者对其进行压力测试找 ...

随机推荐

  1. 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写

    基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...

  2. uva 10192 Vacation(最长公共子)

    uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...

  3. window忘记密码怎么办

    net命令   Net User 功能:添加或更改用户帐号或显示用户帐号信息. 格式:net user [username [password | *] [options]] [/domain] ne ...

  4. hdu2993坡dp+二进制搜索

    MAX Average Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  5. 智能家居DIY

    近期智能家居比較火,将房子简单改造下,也算体验智能家居. 本文解说的是用无线的方式,长处是:不用改造现有线路,直接安装模块就可以实现想要的功能,花的钱也较少,共六百左右 =============== ...

  6. ORA-12012: error on auto execute of job &quot;ORACLE_OCM

    ALERT日志中报错例如以下: Sun Mar 30 06:05:40 2014 Errors in file /oracle/app/oracle/diag/rdbms/zscims/zscims1 ...

  7. 创建Oracle的用户 create user scott identified by tiger;

    在命令行里sqlplus 以system身份登录,password是自己设的system C:\Users\Administrator>sqlplus SQL*Plus: Release 10. ...

  8. 深入理解JavaScript系列(33):设计模式之策略模式(转)

    介绍 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户. 正文 在理解策略模式之前,我们先来一个例子,一般情况下,如果我们要做数据合法性验证,很 ...

  9. 【原创】构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施

    原文:[原创]构建高性能ASP.NET站点 第六章-性能瓶颈诊断与初步调优(下前篇)-简单的优化措施 构建高性能ASP.NET站点 第六章—性能瓶颈诊断与初步调优(下前篇)—简单的优化措施 前言:本篇 ...

  10. 复制(5)——事务复制中的发布者(Publisher)

    发布者是所有被复制(replicated)的数据的集合.每个发布者可以有多个发布(publication),每个发布项包含多个项目(articles),但是这些发布必须处于一个单一的数据库中,而每个项 ...