返回列表 发新帖

【实战分析】一款谷歌软件的逆向分析

  [复制链接]

36

主题

1871

回帖

6537

积分

硕士生

LINGYUE

Rank: 6Rank: 6

金币
3195
好评
45
信誉
105

考神MT论坛最佳新人MT论坛帅哥MT论坛新人

QQ
发表于 2025-11-25 00:55:00 来自手机  | 显示全部楼层 | 阅读模式  来自 江西


前言:久违的教程
我自己也是有点惊讶,时隔多年未发教程帖子的我已经处于退圈的边缘了,但是我在日常生活中又难免会遇到"逆向"这类事。
我也是刚上大学的大一生,对于这大学生活也是有点迷茫,一天除了水课,就是游戏所以也是时间非常的多。
那我就讲讲写这篇教程的缘由吧:
1.逆向爱好的频发
2.闲的蛋疼来打发时间
3.此教程内容与我现所学的Java语言具有一点联系好吧,废话讲的太多了,那就开始正经的吧
正言:(此教程较详细)
软件:Video Converter(谷歌商店)
开始分析

众所周知逆向一款软件会员的通常方法是vip、isvip、会员等,但老外的软件怎么可能会有如此的表达也就是这些方法是搜索不出来什么


我们进入软件的会员界面看到Premium,翻译为高级的,与解锁会员权限有挂勾

直接常量过滤Premium,果不其然,is_premium_user表示为“是否为高级用户”

搜索is_premium_user,逐个转Java分析后qi.c2类简洁明了

qi.c2类invoke方法转Java后不难发现该段Java代码进行了高级用户的识别判断
  1. public final Object invoke(Object obj) {
  2.         SharedPreferences sharedPreferences;
  3.         int i = this.a;
  4.         c0 c0Var = c0.a;
  5.         MainActivity mainActivity = this.b;
  6.         switch (i) {
  7.             case 0:
  8.                 int i2 = MainActivity.d0;
  9.                 l.e(((a) mainActivity).c, "<get-TAGBASE>(...)");
  10.                 if (((Boolean) obj).booleanValue()) {
  11.                     f2 f2Var = ((a) mainActivity).f;
  12.                     f2Var.setValue(Boolean.FALSE);
  13.                     Boolean bool = Boolean.TRUE;
  14.                     f2Var.setValue(bool);
  15.                     if (!e.A()) {
  16.                         try {
  17.                             ApplicationLoader applicationLoader = ApplicationLoader.f;
  18.                             if (applicationLoader != null) {
  19.                                 sharedPreferences = applicationLoader.getSharedPreferences("videoToMp3Convertor", 0);
  20.                             } else {
  21.                                 sharedPreferences = null;
  22.                             }
  23.                             if (sharedPreferences != null) {
  24.                                 SharedPreferences.Editor edit = sharedPreferences.edit();
  25.                                 edit.putBoolean("is_premium_user", true);
  26.                                 edit.apply();
  27.                             }
  28.                         } catch (Exception e) {
  29.                             e.printStackTrace();
  30.                         }
  31.                         n1 n1Var = mainActivity.K().n;
  32.                         Boolean bool2 = Boolean.TRUE;
  33.                         n1Var.getClass();
  34.                         n1Var.k((Object) null, bool2);
  35.                         m.c.setValue(bool);
  36.                     }
  37.                 }
  38.                 return c0Var;
  39.             case 1:
  40.                 boolean booleanValue = ((Boolean) obj).booleanValue();
  41.                 int i3 = MainActivity.d0;
  42.                 if (booleanValue) {
  43.                     a0 a0Var = a.K;
  44.                     l.c(a0Var);
  45.                     hk.e eVar = p0.a;
  46.                     e0.z(e0.b(d.b), (h) null, (ak.c0) null, new y(mainActivity, a0Var, (ej.c) null), 3);
  47.                 }
  48.                 return c0Var;
  49.             default:
  50.                 int i4 = MainActivity.d0;
  51.                 if (((nd.a) obj).b == 11) {
  52.                     mainActivity.K().f();
  53.                 }
  54.                 return c0Var;
  55.         }
  56.     }
  57. }
复制代码

识别高级用户过程分析:首先要调用invoke方法需要布尔类型,所以会将obj强制转为布尔类型(Boolean),然后再通过调用booleanValue()来获取真假值,如果为假直接结束运行,如果为真则会进行高级用户的识别并获取高级用户。(这就是我所说的与我现所学的Java语言有点联系,前几个星期老师刚讲的布尔类型

还不清楚?那就请看流程图吧!
通过以上分析,已经一目了然了返回smali中对应Java中booleanValue()获取真假值的地方,直接强制赋值p1获取高级用户,即简单又暴力

赋值后的Java

什么?解锁高级用户后打开软件却出现这样了?

解决方法:com.google.android.play.core.common.PlayCoreDialogWrapperActivity下面的activity删除即可,这样就不会跳转谷歌了(这方法适合大部分谷歌软件)

成品:https://share.feijipan.com/s/YGZCChiZ
尾声:
本次教程已经结束,希望能够帮助到大家
本人的下次教程估计又是要"几年后的相见"





























本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

17

主题

896

回帖

3793

积分

大学生

ee

Rank: 5Rank: 5

金币
479
好评
6
信誉
123

考神MT论坛新人MT论坛帅哥

发表于 2025-11-25 00:58:50 来自手机  | 显示全部楼层  来自 陕西
沙发
回复

使用道具 举报

36

主题

1871

回帖

6537

积分

硕士生

LINGYUE

Rank: 6Rank: 6

金币
3195
好评
45
信誉
105

考神MT论坛最佳新人MT论坛帅哥MT论坛新人

QQ
发表于 2025-11-25 01:00:08 来自手机  | 显示全部楼层  来自 江西
统治世界 发表于 2025-11-25 00:58
沙发

太快了
回复

使用道具 举报

64

主题

3259

回帖

9177

积分

硕士生

Rank: 6Rank: 6

金币
2194
好评
21
信誉
104

MT论坛帅哥MT论坛新人考神MT论坛最佳新人

发表于 2025-11-25 01:00:24 来自手机  | 显示全部楼层  来自 江苏
看看隐藏
回复

使用道具 举报

229

主题

9655

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2995
好评
27
信誉
92

考神MT论坛新人MT论坛活跃会员

发表于 2025-11-25 01:01:12 来自手机  | 显示全部楼层  来自 广东
什么软件 看看
回复

使用道具 举报

8

主题

1151

回帖

4249

积分

大学生

Rank: 5Rank: 5

金币
1102
好评
8
信誉
117
发表于 2025-11-25 01:02:25 来自手机  | 显示全部楼层  来自 浙江
看看
回复

使用道具 举报

20

主题

4551

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7615
好评
3
信誉
100

MT论坛新人MT论坛帅哥考神MT论坛最佳新人

发表于 2025-11-25 01:04:47 来自手机  | 显示全部楼层  来自 广东
看看内容学习
回复

使用道具 举报

0

主题

1737

回帖

4591

积分

大学生

Rank: 5Rank: 5

金币
2027
好评
0
信誉
100
发表于 2025-11-25 01:05:22 来自手机  | 显示全部楼层  来自 福建
感谢分享
回复

使用道具 举报

1

主题

835

回帖

2642

积分

大学生

Rank: 5Rank: 5

金币
12
好评
0
信誉
74
发表于 2025-11-25 01:05:23 来自手机  | 显示全部楼层  来自 江苏
看看隐藏
回复

使用道具 举报

14

主题

1588

回帖

5807

积分

硕士生

Rank: 6Rank: 6

金币
4137
好评
3
信誉
100

MT论坛最佳新人考神

发表于 2025-11-25 01:30:21 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

82

主题

2316

回帖

6794

积分

硕士生

Rank: 6Rank: 6

金币
129
好评
5
信誉
108

MT论坛新人考神MT论坛最佳新人

发表于 2025-11-25 01:36:45 来自手机  | 显示全部楼层  来自 四川
谢谢分享
回复

使用道具 举报

1

主题

1627

回帖

4178

积分

大学生

Rank: 5Rank: 5

金币
615
好评
0
信誉
100
发表于 2025-11-25 01:38:09 来自手机  | 显示全部楼层  来自 广西
看看隐藏内容
回复

使用道具 举报

112

主题

3324

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
3976
好评
13
信誉
102
发表于 2025-11-25 01:39:33 来自手机  | 显示全部楼层  来自 福建
看看隐藏
回复

使用道具 举报

18

主题

2776

回帖

7699

积分

硕士生

Rank: 6Rank: 6

金币
957
好评
1
信誉
102
发表于 2025-11-25 01:46:36 来自手机  | 显示全部楼层  来自 河南
学习一下
回复

使用道具 举报

46

主题

2704

回帖

1万

积分

博士生

听冬宝宝

Rank: 7Rank: 7Rank: 7

金币
4089
好评
91
信誉
151

MT论坛帅哥考神MT论坛新人MT论坛活跃会员MT论坛最佳新人

QQ
发表于 2025-11-25 01:50:50 来自手机  | 显示全部楼层  来自 贵州
看看隐藏
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表