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来看一下反编译的流程:
代码非常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变化如何破解几场金的更多相关文章
- (转)Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- Android 系统 root 破解原理分析
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...
- [Android Pro] android root权限破解分析
许 多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简 单及安全的,破解Root权限的原理就是在手机的/s ...
- Android 系统 root 破解原理分析 (续)
上文<Android系统root破解原理分析>介绍了Android系统root破解之后,应用程序获得root权限的原理.有一些网友提出对于root破解过程比较感兴趣,也提出了疑问.本文将会 ...
- Android App的破解技术有哪些?如何防止反编译?
现在最流行的App破解技术大多是基于一定相关技术的基础:如一定阅读Java代码的能力.有一些Android基础.会使用eclipse的一些Android调试的相关工具以及了解一些smali的语法规范 ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
- Android动态方式破解apk终极篇(加固apk破解方式)
一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应 ...
- Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)
一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk 主要采用的是静态方式,步骤也很简单,首先使用 ...
- Android应用反破解的思路
一个Android应用要被破解,要经历:反编译->分析代码->重新编译打包的过程,反破解的思路也是从在这三个步骤上做文章: 1, 寻找反编译工具的缺陷,通过阅读其源码或者对其进行压力测试找 ...
随机推荐
- 解决alaert.builder二次调用报错的bug
报错的代码是: The specified child already has a parent. You must call removeView() on the child's parent f ...
- 排序算法c语言描述---冒泡排序
排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...
- POJ---2243 Knight Moves 使用A*算法的广度优先搜索
题目链接:http://poj.org/problem?id=2243 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标.这样可以省 ...
- Google Maps Android API v2 (1)- 入门
才可以开始工作的API,你将需要下载的API,并确保你有一个谷歌地图Android的API V2关键.API和关键是免费提供的. 概观 获得谷歌地图Android的API V2 谷歌地图API密钥 显 ...
- POJ1274 The Perfect Stall【二部图最大匹配】
主题链接: id=1274">http://poj.org/problem? id=1274 题目大意: 有N头奶牛(编号1~N)和M个牛棚(编号1~M). 每头牛仅仅可产一次奶.每一 ...
- 图的创建和遍历(BFS/DFS)
图的表示方法主要有邻接矩阵和邻接表.其中邻接表最为常用,因此这里便以邻接表为例介绍一下图的创建及遍历方法. 创建图用到的结构有两种:顶点及弧 struct ArcNode { int vertexIn ...
- Java二叉排序树(转)
一.二叉排序树定义 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree).其定义为:二叉排序树或者是空树,或者是满足如下性 ...
- svn加入新的文件夹
方法一: 1.在远程server上生成新的文件夹 svn mkdir http://svn.xxx.com/svn/mobile/strategy/assistant/branches/talk -m ...
- VS2012 添加服务引用常见错误
问题:用vs2012 添加wcf引用时在对象查看器中找不到 服务引用的类 例如默认高级配置: 解决办法:在服务的高级配置中,将重新使用引用的程序集中的类型 选项勾去掉 点击确定 即可
- Java经典23结构模型的设计模式(三)------附加代理模式、适配器型号、Facade模式的差异
本文介绍了7样的结构模型中的其余2种:轻量级.代理模式. 一.享元模式FlyWeight 享元模式比較简单且重要,在非常多场合都被用到.仅仅只是封装起来了用户看不到.其概念:运用共享内存技术最大限度的 ...