同TTX更可爱的层次分析法游戏破解

最近的工作太忙,没啥时间写文章,今天遇到一点点的游戏,浅析。以中午的优势写这篇文章。

移动MM的游戏。前面我们已经写过非常多文章,没有看过的朋友,自行查找就可以,今天我们继续分析一个类似的游戏,只是使用多种方式来分析,同一时候。欢迎同学们自己补充新方式来扩展思路。

0x1:游戏试玩

打开游戏玩了会儿。近期这类游戏许多,也谈不上喜欢玩不喜欢玩。那么直接查看商城吧。

配合查看游戏反编译的文件夹结构:

能够简单推測游戏的内购是否为移动MM的。

然后配合我们自己简单查看下smali代码,确定内购支付方式为移动MM .

0x2:分析破解

确定了游戏的支付方式。我们就有目的性的去分析怎样来分析它的破解情况了。

在这里再次补充上:

移动MM的支付方式以及SDK的相关调用方法

http://wenku.it168.com/d_001271444.shtm

通过了解它的支付流程。来測试他在哪块地方存在被破解的可能,即欺骗支付。

在这篇文章中,已经有简单说明了,这里便不再反复:

http://www.52pojie.cn/thread-259909-1-1.html

然后。我们能够想到:

①.我们直接改动支付结果。用支付成功的方法替换支付失败

②.直接将推断支付是否成功的状态码锁定为支付成功

③.直接改动游戏金币

④.改动支付短信

0x3:第一种支付方式破解

还是上面说的。直接搜索寻找onBillingFinish。

这里所说依照第一种方式,有点牵强,只是,支付失败的话,这里的code也将改变,我们让他走订购成功的方法。即改动方法内的那个推断语句。

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

相应smali代码自行改动就可以。

0x4:另外一种锁定状态码破解

我们在追踪onBillingFinish方法上下文的时候。发现PurchaseCode.smali中的getStatusCode()I方法以及MessageInfo.smali中的getPurchasecode()I方法,应该是用于定义支付码状态,即支付成功,支付失败,取消支付的。

在PurchaseCode.smali文件里。我们发现:

.field public static final WEAK_ORDER_OK:I = 0x3e9

这个是定义支付订单成功的状态码。一般在移动MM里面。多数都是这个。

所以。我们能够看到上面所说getStatusCode()I方法和getPurchasecode()I方法都是返回值为int类型的。那么我们直接将其返回值改动为0x3e9。即数字1001。即代表支付成功。

我们保存改动。回编译。查看到,点击购买button。直接提示下图:

在无卡模式下測试的,一切正常。所以肯定了我们的改动时正确的,也不会扣费。

0x5:直接改动金币

通过OnBillingFinish()方法

我们进入到这个PopStar查看:

当然。这个类里面还有非常多方法,非常多支持破解的方法。如:

定义购买金币数量的,即购买成功后添加的数量。等等。。。

长话短说,咱们看到PopStar.nativeAddCoin方法后,确定是一个native方法,那么我们找到上文

System.loadLibrary("xinxin");

用IDA载入libxinxin.so,然后定位到nativeAddCoin方法.

如今大家多数用的大佬的那个IDA,带F5的,那么我们直接f5

查看到这里的方法,useGameCoin方法。打开这种方法查看:

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

这里有我加的凝视,非常清晰的,看不明确的,F5一下也就知道了。

由于getIntegerForKey,返回值为R0。然后往下第二行代码,R0=R0+R6,所以我们关键是在这里改动R0,即金币数量

Hex查看一下二进制。这里为Thumb指令,那么我们能够操作局限性也非常高了。

所以。这里提供一个思路。大家能够寻找更加简便的方法。

即。BL getIntegerForKey,我们直接复制R0一个数值。然后在以下Adds R0,R0,R6这里,直接对R0逻辑左移一下。即LSL一下,将其数值变大。

由于第一个BL是4个字节,我们直接改动 00 00 09 20 。即Movs R0,R0 代表没有不论什么操作,09 20是将数字9赋值给R0

然后ADDs那一行,有两个字节。直接改为 00 04,即 LSLS R0,R0,#0x10

这样,我们即完毕了对金币数量的赋值。例如以下图:

然后,我们在16进制下改动,选用010Editor或UE,ctrl + g。进行地址跳转,寻找到我们在IDA改动的地址。依照上文改动。保存,替换,回编译。

凝视::  int a=9        ;                a=a<<0x10;         即金币锁定为589824

这里须要说明的是。这种方法何时被调用,即才干激活我们对金币的赋值呢?

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

直接在IDA里面对这种方法按下x键,查看调用,有5处。那么应该非常easy被激活。

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

红色标注的,是使用金币的道具。依照我们看到方法被调用的地方。这里被调用了。然后金币数量即我们定义的。

0x6:改动短信

这里不多说了,依据系统发送短信函数进行查找改动,替换短信内容,替换短信发送人就可以。

我直接使用hook的方式替换的,比較省事了。。

相关代码不难。看完我前面几篇hook java的文章的同学。应该非常easy可以写出来代码。这里不再多写。有兴趣,自己动手去。

文档和相关附件:

http://pan.baidu.com/s/1kTLwwDL

时间: 2024-11-09 07:07:10

同TTX更可爱的层次分析法游戏破解的相关文章

层次分析法量化用户的产品偏好

用户对产品有很多行为,如何进行用户行为分析来量化用户对产品的喜好程度呢? 比如豆瓣FM,用户可以点击"喜好"和"扔进垃圾箱"等:比如优酷视频,用户可以顶,踩,分享等. 我们如何通过这些行为信息分析用户对这首歌的喜好程度,对这个视频的评分是多少. 下面实例分析用户对视频的喜好程度.说到视频,我们可以联想到各种用户行为,看了多久,是否评论,是顶是踩,是否分享? 我们可以通过这些指标来评估用户对该视频的打分.比如用户看了多久打多少分,分享了打多少分等.还有就是不同的行为也

从Elo Rating System谈到层次分析法

1. Elo Rating System Elo Rating System对于很多人来说比较陌生,根据wikipedia上的解释:Elo评分系统是一种用于计算对抗比赛(例如象棋对弈)中对手双方技能水平的方法,它由Arpad Elo创建.(The Elo rating system is a method for calculating the relative skill levels of players in competitor-versus-competitor games such

层次分析法

title: 层次分析法 date: 2020-02-25 19:14:41 categories: 数学建模 tags: [MATLAB, 评价模型] mathjax: true 定义 ? 层次分析法(The Analytic Hierarchy Process即AHP)是由美国运筹学家. 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解 决了定性问题定量化的处理过程. ? AHP的主要特

建模算法(十一)&mdash;&mdash;层次分析法

(一)层次分析法的基本原理与步骤 一.步骤 1.建立递阶层次结构模型 2.构造出各层次中的所有判断矩阵 3.层次单排序及一致性检验 4.层次总排序及一致性检验 二.递阶层次的建立与特点 1.分层: (1)最高层:这一层次中只有一个元素,一般它是分析问题的预定目标和理想结果. (2)中间层:这一层次中包含为了实现目标所涉及的中间环节,主要是一些考虑指标和一些准则. (3)最底层:这一层次中包含为了实现目标可供选择的各种方案. 2.注意点: 一般不要1层不要超过9个因素 3.一个demo 是三个旅游

层次分析法(Analytic Hierarchy Process,AHP)

昨天晚上室友问我什么是层次分析法?我当时就大概给他介绍了一下,没有细讲. 今天我仔细讲讲这个. 层次分析法是运筹学里面的一种方法,是讲与决策总是有关的元素分解成目标.准则.方案等层次,在此基础上进行定性和定量分析的决策方法.我们通过几个例子来看层次分析法的使用场景. 例1,某一位顾客选购电视机时,对时常正在出售的四种电视机考虑了八项准则作为评估依据,建立层次模型如下: 从品牌,外形,价格,尺寸,耗能量,厂家信誉,伴音,保修服务者几个方面考虑来选购电视机. 我们举一个简单例子来看看怎么计算的. 我

【算法类原创】层次分析法的内涵

0)概述 本文会先用购买电脑的案例简单的阐述层次分析法,继而阐述层次分析法的两大核心内容:分层(还原)及求权重. 1)用层次分析法买电脑 决策在我们生活中随处可见.比如在超市,突然想上厕所,而你又正好忘了自己的性别,或者你不认识厕所门上的男女标识,那你将面临一次抉择:该上男厕所还是上女厕所? 或者你想买一台电脑,但是预算有限,那该如何根据自己的需求选一款最适合自己的电脑呢? 层次法是这么教我们选电脑的: 2)层次分析法内涵一:分层 层次分析法的层次就是将问题拆解为目标层.准则层.方案层:其中最核

数学建模(一)层次分析法

层次分析法(用于评价类问题) 这种方法的特点是在对复杂的决策问题的本质.影响因素及其内在关系等进行深入分析的基础上,利用较少的定量信息及其内在关系等进行深入分析的基础上,利用较少的定量信息使决策的思维过程数学化,从而为多目标.多准则或无结构特性的复杂决策问题提供简便的决策方法. 是对难以完全定量的复杂系统作出决策的模型和方法. 步骤: 1.建立层次结构模型(此处记得参考文献) 将决策的目标.考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层.中间层和最低层,绘出层次结构图 最高层:决

01层次分析法

AHP(层次分析法) 层次分析法(The analytic hierarchy process)简称AHP,在20世纪70年代中期由美国运筹学家托马斯·塞蒂(TLsaaty)正式提出.它是一种定性和定量相结合的.系统化.层次化的分析方法.由于它在处理复杂的决策问题上的实用性和有效性,很快在世界范围得到重视.它的应用已遍及经济计划和管理.能源政策和分配.行为科学.军事指挥.运输.农业.教育.人才.医疗和环境等领域. 层次分析法的基本步骤 1.建立层次结构模型.在深入分析实际问题的基础上,将有关的各

以TTX连萌来多层次分析游戏破解

最近工作太忙,没啥时间写文章,刚好今天遇到一个小游戏,简单分析下,趁着中午写下此文. 移动MM的游戏,前面我们已经写过很多文章,没有看过的朋友,自行查找即可,今天我们继续分析一个类似的游戏,不过使用多种方式来分析,同时,欢迎同学们自己补充新方式来扩展思路. 0x1:游戏试玩 打开游戏玩了会儿,最近这类游戏非常多,也谈不上喜欢玩不喜欢玩,那么直接查看商城吧. 配合查看游戏反编译的目录结构: 可以简单猜测游戏的内购是否为移动MM的. 然后配合我们自己简单查看下smali代码,确定内购支付方式为移动M