4.5 糖果星星达人

作者:飞龙

软件在这里下载:http://www.anzhi.com/soft_2539282.html

第一次进入游戏之后,会弹出来一个“新手礼包”,关掉之后,点击“新游戏”,之后进入“关卡1-1”。我们点击左上角的加号,会出现这个界面:

我们点击“领取”之后,会弹出“支付中,等待支付结果”。如果你是用模拟器玩的,过一会儿会弹出“购买失败”:

信息收集完毕,拖入 Android Killer:

搜索“购买失败”,上下文中应该会有“购买成功”。直接搜索原文本是没有用的,这里我就不演示了,要搜索 Unicode 编码形式\u8d2d\u4e70\u5931\u8d25

starcrash$THandler.smalihandleMessage方法中找到了这个文本,这个类是starcrash类中的闭包。

.line 269
:pswitch_5
sget-object v4, Lcom/easefun/starcrash/starcrash;->context:Landroid/content/Context;const-string v5, "\u8d2d\u4e70\u5931\u8d25" # 购买失败invoke-static {v4, v5, v6}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;move-result-object v4invoke-virtual {v4}, Landroid/widget/Toast;->show()V.line 270
invoke-static {}, Lcom/easefun/starcrash/starcrash;->dismissProgressDialog()V.line 271
invoke-static {v6}, Lcom/easefun/iap/StarJNI;->sendMessage(I)Vgoto :goto_0 # return-void

可以看出这是switch结构的一个分支,我们到跳转表处看看:

.line 236
iget v4, p1, Landroid/os/Message;->what:Ipacked-switch v4, :pswitch_data_0# ....line 236
:pswitch_data_0
.packed-switch 0x0:pswitch_0:pswitch_1:pswitch_2:pswitch_3:pswitch_4:pswitch_5 # 购买失败:pswitch_6:pswitch_7:pswitch_8:pswitch_9
.end packed-switch

这个代码是安卓的跨线程消息传递机制,不懂可以直接搜索Handler。这个switch枚举了Messagewhat参数,该参数用于区分消息的不同种类。问题来了,what值的含义是开发者自己定制的,而且外部类里面也没有相关常量。

如果不想分析代码,可以把该值改成 0~9,每个都试一遍。但是总归有不这么麻烦的办法,那就是分析代码。有两种方式,第一种是从这几个分支里面找到成功分支,第二种是从外部类的线程入口函数中找到成功的代码。我这里选前者。

我们简单遍历一下各分支的字符串吧(具体代码省略)。

分支编号 消息 行号
2 请确认SIM卡已插入 124
3 支付需要网络连接 144
4 购买成功 164
5 购买失败 184
6 购买取消 204
8 支付中,等待支付结果 255
9 已成功领取今日特权礼包中的十个钻石 269

只有这几个分支是有消息的,而且观察得出,这个handler不仅仅处理购买成功和失败消息,还处理了其它无关的消息。这种情况下就不能强行都改成第 5 个分支。我们可以考虑把第 2、3、5、6 都改成第四个分支。

.packed-switch 0x0:pswitch_0:pswitch_1:pswitch_4 # 2:pswitch_4 # 3:pswitch_4:pswitch_4 # 5:pswitch_4 # 6:pswitch_7:pswitch_8:pswitch_9
.end packed-switch

重新编译并打包后,我们试一试:

它这个付费是通过短信实现的,它会直接发送短信,无法自己输入手机号。所以,如果你插着电话卡玩还是会扣费的,这一点可以通过移除AndroidManifest.xml中的SEND_SMS权限来解决。

安卓逆向系列教程 4.5 糖果星星达人相关推荐

  1. 安卓逆向系列教程 4.1 字符串资源

    安卓逆向系列教程 4.1 字符串资源 作者:飞龙 这篇教程是 APK 逆向实战的第一个例子,我会以一个非常简单的程序开始.主要内容就是修改字符串资源,除了破解所需之外,汉化也需要了解这个东西.我们的程 ...

  2. 安卓逆向系列教程(三)静态分析工具

    安卓逆向系列教程(三)静态分析工具 作者:飞龙 以下工具可能都需要先安装 JDK,安装方法就不说了,随便一搜就是. Android Killer 几年之前,我们要破解 APK,可能需要用到 apkto ...

  3. 安卓逆向系列教程(二)APK 和 DEX

    安卓逆向系列教程(二)APK 和 DEX 作者:飞龙 APK APK 是 Android 软件包的分发格式,它本身是个 Zip 压缩包.APK 根目录下可能出现的目录和文件有: 名称 用途 META- ...

  4. 安卓逆向系列教程(一)Dalvik 指令集

    安卓逆向系列教程(一)Dalvik 指令集 作者:飞龙 寄存器 Dalvik 指令集完全基于寄存器,也就是说,没有栈. 所有寄存器都是 32 位,无类型的.也就是说,虽然编译器会为每个局部变量分配一个 ...

  5. 安卓逆向系列教程 4.4 逆向云播 VIP

    4.4 逆向云播 VIP 作者:飞龙 这次的软件是刀哥云播,在这里下载:http://www.xuepojie.com/thread-23860-1-1.html 我们先分析一下行为: 打开之后的界面 ...

  6. 安卓逆向系列教程 4.10 玄奥八字

    4.10 玄奥八字 作者:飞龙 声明:本人极度厌恶玄学,选取此软件是为了研究逆向技术,并不代表本人赞成其内容. 这次要破解的软件是这个:http://www.xazhouyi.com/android/ ...

  7. 飞龙的安卓逆向系列教程

    作者:飞龙 在线阅读 PDF格式 EPUB格式 MOBI格式 代码仓库 更新历史 v1.0:2017.4.4 添加 Dalvik.APK.DEX 基础知识 添加静态分析.抓包工具教程 添加 12 个 ...

  8. 安卓逆向系列教程 4.9 破解内购 II

    4.9 破解内购 II 作者:飞龙 这次要破解的游戏是这个:http://dl.pconline.com.cn/download/544623.html 打开游戏后,主界面有个 VIP,我们要破解的就 ...

  9. 安卓逆向系列教程 4.13 MagSearch 1.8 爆破

    4.13 MagSearch 1.8 爆破 作者:飞龙 软件下载:http://www.xuepojie.com/thread-26549-1-1.html 打开之后是登录界面,随便输入用户名和密码, ...

最新文章

  1. Java对象之间相同属性的赋值
  2. 【英语】秋风吹---9月英语
  3. ftp pam mysql_ftp+pam基于mysql的认证
  4. 'gbk' codec can't decode byte 0x9d in position 7674: illegal multibyte sequence
  5. iOS 使用WKWebView展示本地gif图片 并设置图片自适应屏幕大小
  6. 【爬虫】链接二手房信息爬取
  7. 介绍一款rar文件密码破解利器——RAR Password Unlocker
  8. java openssl rsa_Java中使用OpenSSL生成的RSA公私钥进行数据加解密
  9. 一线城市房价集体下跌暗藏啥玄机?
  10. 十大城市加速崛起,数字化创新驱动特点明显
  11. 乐观锁和悲观锁的简单理解
  12. 研华IO控制卡硬件接线方式
  13. 【相机】(2)——WebView中打开相机、文件选择器的问题和解决方法
  14. Kafka牛逼在哪里?
  15. 衡水学院计算机实习,衡水学院教育实习系列报道之三
  16. java excel 背景_Java设置Excel背景
  17. 笔记本连接苹果耳机的方法
  18. 打开Steam VR,手柄图标却不显示(三星设备 连接蓝牙的)
  19. python pycrypto 加密解密
  20. Ebay Trading API整理

热门文章

  1. PID算法的EXCEL模拟实现
  2. 注册终止处理函数atexit()
  3. 重绘CButton控件
  4. STM32F103_SPI读写外部FLASH
  5. nasm纠正性训练指南pdf_PDF转word,一键转换?没有这么简单
  6. 智伴机器人三级分销模式_企业选择微信三级分销定制开发原因?
  7. 最长回文子串java_5. 最长回文子串
  8. 【LeetCode】【HOT】104. 二叉树的最大深度(BFS+队列/递归)
  9. Python学习day07 - Python进阶(1) 内置方法
  10. 转载-Oracle ORACLE的sign函数和DECODE函数