getstring方法_[Android 原创] 某录屏大师实现爆破之第一种方法教程

0x1 前言

本篇文章所涉及的应用程序仅作为本次逆向过程的练习样本,文章的逆向思路为个人原创,性质为新手入门级,难度较低,仅作为交流分享帖子,大神们请绕道。

感兴趣的朋友可以参考我之前发过的同类型帖子:

[Andorid 原创] 自己动手,爆破你的第一款软件

原创教程,转载请注明出处;

禁止用于个人学习外一切用途!

0x2 过程
1、 打开样本app,看到某些功能是需要付费的,而我们的目的就是绕过收费,实现零支付奔放体验。

本文第一种思路则是以关键词(恢复购买)入手。

8db96e30-241b-eb11-8da9-e4434bdf6706.png

2、 arsc资源中搜索该关键词,得出其英文名为: restore_vip_success(恢复购买成功) 然后dex全局搜索该字符串代码,定位到主类位置:
Lcom/enjoyglobal/cnpay/VipPayActivity;
在类中继续搜索,定位到:
sget v0, Lcom/enjoyglobal/cnpay/R$string;->restore_vip_success:I
3、 查阅该处上下代码,初步断定可以挂钩了,附上此处部分代码:
   .line 1050   iget v2, v1, Lcom/enjoyglobal/cnpay/network/entity/PayRestoreEntity;->failStatus:I   if-nez v2, :cond_13e   if-eqz v0, :cond_13e   .line 1051   sget v0, Lcom/enjoyglobal/cnpay/R$string;->restore_vip_success:I   invoke-virtual {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->getString(I)Ljava/lang/String;   move-result-object v0   invoke-static {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->a(Landroid/content/Context;Ljava/lang/String;)V   goto :goto_155   .line 1052   :cond_13e   iget v0, v1, Lcom/enjoyglobal/cnpay/network/entity/PayRestoreEntity;->failStatus:I   if-ne v0, v3, :cond_14c   .line 1053   sget v0, Lcom/enjoyglobal/cnpay/R$string;->account_status_freeze:I   invoke-virtual {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->getString(I)Ljava/lang/String;   move-result-object v0   invoke-static {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->a(Landroid/content/Context;Ljava/lang/String;)V   goto :goto_155   .line 1055   :cond_14c   sget v0, Lcom/enjoyglobal/cnpay/R$string;->restore_vip_failed:I   invoke-virtual {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->getString(I)Ljava/lang/String;   move-result-object v0   invoke-static {v4, v0}, Lcom/enjoyglobal/cnpay/VipPayActivity;->a(Landroid/content/Context;Ljava/lang/String;)V   :goto_155   return-void
这里转换下java形式查阅,转换后代码如下:
      int i3 = i1;      org.greenrobot.eventbus.c.a().c(new com.enjoyglobal.cnpay.b.a());      if ((paramPayRestoreEntity.failStatus == 0) && (i3 != 0)) {         a(localVipPayActivity, localVipPayActivity.getString(R.string.restore_vip_success));      } else if (paramPayRestoreEntity.failStatus == 2) {         a(localVipPayActivity, localVipPayActivity.getString(R.string.account_status_freeze));      } else {         a(localVipPayActivity, localVipPayActivity.getString(R.string.restore_vip_failed));      }
通过java形式展现,有if语句判断,大概意思为:定义i变量,通过其值与failStatus值进行比较判断,最后输出结果。可以看下图理解:

91b96e30-241b-eb11-8da9-e4434bdf6706.png

简单翻一下:

如果failStatus=0与i3≠0时,输出restore_vip_success结果,即恢复购买成功; 如果failStatus=2时,即帐号为冻结状态; 否则都不满足的话即输出结果:恢复购买失败。 4、 上述理解大意之后,返回smail界面,对关键词所在进行寄存赋值(即下方代码第三行添加const/4 v2, 0x0),修改后代码如下:
   .line 1050   iget v2, v1, Lcom/enjoyglobal/cnpay/network/entity/PayRestoreEntity;->failStatus:I   const/4 v2, 0x0   if-nez v2, :cond_13e   if-eqz v0, :cond_13e   .line 1051   sget v0, Lcom/enjoyglobal/cnpay/R$string;->restore_vip_success:I
加完后,解决了failStatus这里,再往上修改i3变量值,让其值不为0即可(即对寄存v0的值均赋值1)。修改后代码如下:
   .line 1033   iget-object v5, v1, Lcom/enjoyglobal/cnpay/network/entity/PayRestoreEntity;->pay_date_1112:Ljava/lang/String;   invoke-static {v4, v5}, Lcom/enjoyglobal/cnpay/aq;->d(Landroid/content/Context;Ljava/lang/String;)V   :cond_ea   if-nez v10, :cond_f5   if-nez v13, :cond_f5   if-nez v14, :cond_f5   if-eqz v0, :cond_f3   goto :goto_f5   :cond_f3   const/4 v0, 0x1   goto :goto_f6   :cond_f5   :goto_f5   const/4 v0, 0x1   :goto_f6   if-eqz v0, :cond_106   const/4 v5, 0x0   .line 1039   :goto_f9   array-length v6, v15   if-ge v5, v6, :cond_122   .line 1040   sget-object v6, Lcom/enjoyglobal/cnpay/network/entity/ProductIdConstant;->keys:[Ljava/lang/String;   aget-object v6, v6, v5   invoke-static {v4, v6, v2}, Lcom/enjoyglobal/cnpay/aq;->a(Landroid/content/Context;Ljava/lang/String;Z)V   add-int/lit8 v5, v5, 0x1   goto :goto_f9   :cond_106   move v5, v0   const/4 v0, 0x1
5、 修改完保存返回,签名app,测试app。 PS:既然是通过恢复购买方法进行的爆破,那进入app后我们得手动点一下恢复购买即可实现。 6、 测试效果图

95b96e30-241b-eb11-8da9-e4434bdf6706.png

99b96e30-241b-eb11-8da9-e4434bdf6706.png

9cb96e30-241b-eb11-8da9-e4434bdf6706.png

7、 到这里我们的目的便实现了。 0x3 总结
在练习中,拥有灵活创新的变通思路无疑对学习的过程有着很大的帮助。本文提及的样本远不止此方法,其它如内购法、直装法等,均可以达到目的... 个人觉得过程>结果,能够经常在过程中发现/找出问题/思路,然后思考/选择方式去解决它,即使最后不成功,你的收获也是很大很有意义的... ps:文章若有解释错误等弊处,还请留言告知。9fb96e30-241b-eb11-8da9-e4434bdf6706.png

0x4 下载


样本app名为乐*秀*录屏大师, 感兴趣的朋友可以举一反三去试一下。 最新版3.5.3没来得及打包,和上版没啥区别。 这里发下ciapp的国内外版本的合集链接:

https://www.lanzous.com/b0mi3csd

0x5 尾言
有空的话,下篇出个直装的教程(安装即VIP)。 原创不易,胜于搬砖。希望多多支持!谢谢!9fb96e30-241b-eb11-8da9-e4434bdf6706.png

a4b96e30-241b-eb11-8da9-e4434bdf6706.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值