安卓逆向系列教程 4.5 糖果星星达人

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 v4

invoke-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)V

goto :goto_0 # return-void

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

.line 236
iget v4, p1, Landroid/os/Message;->what:I

packed-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权限来解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,100评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,862评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,993评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,309评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,303评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,421评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,830评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,501评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,689评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,506评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,564评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,286评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,826评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,875评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,114评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,705评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,269评论 2 341

推荐阅读更多精彩内容