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

移动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也将改变,我们让他走订购成功的方法。即改动方法内的那个推断语句。

相应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方法。打开这种方法查看:

这里有我加的凝视,非常清晰的,看不明确的,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

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

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

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

0x6:改动短信

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

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

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

文档和相关附件:

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

转载于:https://www.cnblogs.com/mengfanrong/p/4565156.html

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

  1. ahp层次分析法软件_层次分析法在历史街区研究中的应用简析

    摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...

  2. 基于层次分析法的轴间预瞄和轴距预瞄俯仰半车LQR控制仿真分析(重型汽车)

    目录 前言 1. 半车悬架模型 2. LQR最优控制原理简述 3. 基于LQR的半车悬架轴间预瞄和轴距预瞄仿真分析 3.1仿真模型 3.2仿真结果 4.总结 前言 上篇文章简谈了轴距预瞄和轴间预瞄的原 ...

  3. 层次分析法及matlab代码

    数学建模算法(一) 层次分析法 The analytic hierarchy process(AHP) [清风数学建模课程笔记] 文章目录 数学建模算法(一) 层次分析法 The analytic h ...

  4. ahp层次分析法_层次分析法在历史街区研究中的应用简析

    摘要 AHP (Analytic Hierarchy Process)层次分析法通常被运用于解决多目标.多标准.多要素.多层次的非结构化的复杂决策性问题,特别是战略决策性问题,在建筑.规划.风景园林等 ...

  5. 层次分析法 你真的懂了吗?(完更)

    层次分析法 (The analytic hierarchy process,简称AHP)(hierarchy n. 层级:等级制度) 建模中最基础的方法之一,主要用于解决评价类问题. 评价类问题: 举 ...

  6. 数模01【层次分析法模型】

    学习网址:[强烈推荐]清风:数学建模算法.编程和写作培训的视频课程以及Matlab等软件教学 视频课件:[链接:https://pan.baidu.com/s/17J_RzjwcKTH7xedkVel ...

  7. yaahp层次分析法步骤_综合评价方法之层次分析法,选择再也难不倒你!

    在日常生活中, 我们常常面临着各种各样的选择. 比如你想去北京.上海.广州旅游, 但是由于种种原因, 你只能选择一个地点去旅游, 那么哪一种选择是最优的呢? 有没有较为科学的方法帮助我们更好地选择呢? ...

  8. 评价类模型:1.层次分析法

    评价类问题 举例 高考结束,小明在华中科技大学和武汉大学之间做选择 首先,选择打分指标及其所占权重: 学习氛围,就业前景,男女比例,校园景色 随后,根据查资料或者其他途径对两所校园的各个指标进行打分 ...

  9. 数学建模层次分析法例题及答案_斩获国际特等奖!兰理工数学建模团队为百年校庆献礼...

    近日,2019年美国大学生数学建模竞赛(MCM-ICM)成绩正式公布. 兰州理工大学数学建模团队再创佳绩,分别获得国际特等奖(Outstanding Winner)1项.一等奖(Meritorious ...

最新文章

  1. 存储引擎-存储结构之一:行
  2. python知识:all、dict()、min、setattr、any函数
  3. 诺基亚力邀App开发员加入Ovi以对抗苹果
  4. 如何在python官网下载pip_[Python]Pip的安装以及简单的使用
  5. Hadoop实战(3)_虚拟机搭建CDH的全分布模式
  6. WPF程序,运行时,结束时,要运行的操作(自动保存,检查单程序)
  7. 计算机组成原理基本试题,计算机组成原理试卷2及答案
  8. python通信工程定额_通信工程2008版定额和2017版定额简单对比
  9. Win7系统能用一键装机的方式安装win10吗?
  10. 参加2022 年第四届齐鲁工业大学(山东省科学院)与山东师范大学ICPC 大学生程序设计竞赛的总结
  11. OpenWrt增加Led
  12. 2021.4.3en
  13. C#获取标准北京时间
  14. 10G整数中寻找中位数
  15. android 缓存头像,android 实现类似微信缓存和即时更新好友头像
  16. matlab 可视化界面,Matlab 的可视化界面设计(上)
  17. Vue form表单input框 手动赋值 提交时 表单input值没有生效 验证仍然是空
  18. vs2017打开项目后项目是空的
  19. “美国老太太”酿造了全球金融危机
  20. K-means算法和K临近算法

热门文章

  1. android冒烟测试自动化,安卓自动化测试总结(五)——测试结果发送及内容展示...
  2. mysql临时表数量_MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
  3. matlab 迭代时保存每次迭代数据,Matlab 迭代步数据保存问题.
  4. Inception v2/v3原理与实现
  5. 廖雄南昌大学计算机系,南昌市社区老年性痴呆患病率及其影响因素
  6. kali linux学习入门- Chrome浏览器安装,可以正常打开
  7. list元素求和_LeetCode刷题实战82:删除排序链表中的重复元素 II
  8. 从零开始实现数据结构(一) 动态数组
  9. 在vscode中怎样debug调试go程序
  10. python面向对象学习(七)单例