返回列表 发新帖

【逆向教程】实战简析Activity启动

  [复制链接]

36

主题

1477

回帖

6691

积分

硕士生

博士生

Rank: 6Rank: 6

金币
593
好评
44
信誉
145

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

QQ
发表于 2025-2-8 18:16:41 | 显示全部楼层 | 阅读模式  来自 广东
本帖最后由 Sunika 于 2025-2-8 18:46 编辑

免责声明:本文章仅供学习和研究用途,旨在学习安卓逆向工程的基本技术和操作流程,以提升个人技术能力。文章中的案例仅作为技术演示,所使用的任何具体应用软件均未直接透露信息,仅为学习目的选取。如有侵权,请联系本人或管理员处理

版本:2.8.10
软件:???????

网页版教程免费但需回复,全文pdf版本1个币,与网页版无区别。欢迎各位购买支持
如果文章被吞字请购买文档或等文档免费

pdf链接:

普通去签后进入app

结果等了近10秒才进去
难道每一次使用都要等10秒钟?
忍不了

因此,我们的第一件事情是跳过启动页

跳过启动页

打开activity记录,进入软件

发现先进入的是com.tianxingjian.supersound.MainActivity(以下简称MainActivity),再进入的是com.tianxingjian.supersound.HomeActivity(以下简称HomeActivity)

想要启动一个新activity可使用如下两种方法:


1. public void startActivity(Intent intent)
2. public void startActivityForResult(Intent intent, int requestCode)


两种方法区别在于startActivity用于启动一个新Activity且不关心返回结果,而startActivityForResult用于启动新Activity并需要接收其返回的结果


而Intent对象是用于在不同组件之间传递信息的工具。它包含了启动目标Activity所需的关键信息(如目标Activity的类名等),可以将其看作是"启动某个Activity的命令"

为了实现直接从MainActivity跳转到HomeActivity,我们可以按照以下步骤操作:


1. 在MainActivity中找到启动HomeActivity的代码,即startActivity()的调用
2. 将这段代码放到MainActivity的onCreate()方法中


这样,当MainActivity被创建时(即onCreate()方法执行时),就会直接启动HomeActivity,从而跳过启动页

操作如下

找到启动HomeActivity的代码

首先类名搜索MainActivity,再在结果中搜索代码startactivity,得到三个结果


第一个搜索结果:

可以看到startActivity传入的intent里写的类是MainActivity,即要启动的是MainActivity。再结合下面putExtra的键"only_back_app"可以知道这个方法应该与我们的需求无关,直接忽略

第三个搜索结果:

传入的intent里也是MainActivity,因此不符合需求,忽略

而第二个搜索结果:

当x.j().p()>1时,startActivity方法会传入一个Intent,其Action为"android.intent.action.VIEW",且URI为"inapp://super.ae/home"。系统会在AndroidManifest.xml文件中与intent-filter匹配,以此启动满足要求的Activity



根据这两幅图片得出启动的是HomeActivity,这正是我们所要的

GuideActivity是第一次启动app时用于初始引导的,与我们的需求无关,忽略

把启动代码放到MainActivity的onCreate()方法中

根据图5,HomeActivity的启动代码为:
  1. Intent intent = new Intent("android.intent.action.VIEW", Uri.parse("inapp://super.ae/home"));

  2. intent.setPackage(getPackageName());

  3. startActivity(intent);

  4. finish();

  5. this.m = true;
复制代码

由于onCreate方法不仅用于启动Activity,还承担着其他初始化操作,因此在修改时需要谨慎分析其具体作用,以确保不影响其他逻辑

修改前的onCreate方法:

通过分析代码中的if条件("only_back_app"),可以得出结论:该代码块的内容与需求无关,且是必须保留的。删除或修改它可能会影响某些操作的正常执行。直接忽略这一部分

接着,关注else代码块的内容,方法如下:

显然,这段代码与设置开屏广告相关,因此推测正常进入首页的逻辑是通过广告相关的类来启动HomeActivity

在这种情况下,我们可以直接用启动HomeActivity的代码替换掉else中的广告逻辑
修改后的onCreate方法:


保存安装测试,发现进入首页神速

解锁功能

打开activity记录
当使用会员功能时,发现会跳转到com.superlab.billing.GuideDonateActivity


为了找出会员的判断逻辑,首先需要定位启动GuideDonateActivity的代码位置。然后,再查找其调用以此找出是哪个部分触发了该Activity的启动
通过这种方式,我们可以追溯到会员判断的代码,从而了解何时以及如何判断用户是否为会员

具体操作如下:
先进入该类查找调用处


再在结果中代码搜索startactivity
发现唯一一处用于启动"捐赠"页面的地方


转java发现这个方法就是单纯用来启动"捐赠"页面的
因此再查找这个方法的调用


这两个结果都可以追溯到关键的代码逻辑

首先看第一个结果:

可以看到,a方法的返回值决定了是否启动"捐赠"页面

接着,我们查看a方法的具体代码:

从代码来看,a方法显然是用于会员判断的(实际测试也证明如此)。为了阻止启动"捐赠"页面,我们可以尝试修改a方法的返回值

通过字符串搜索"validated"和"validated_time",发现它们唯一的get调用就在这个方法中。因此,我们可以直接清空a方法的内容,直接返回1,从而跳过"捐赠"页面的启动

接下来是第二个搜索结果:


经过两次调用后,我们发现多个调用结果,进入查看后可以确认:

如果是会员,继续使用会员功能。
如果不是会员,则启动"捐赠"页面

这段逻辑的判断点依旧是a()方法

为了防止跳转到"捐赠"页面,我们同样可以清空a方法,直接返回1

保存安装测试,会员功能可正常使用,广告消失

ps1:本人测试哪怕会员功能可用,但开屏等待还是有,因此建议修改代码跳过开屏

ps2:该帖中涉及的Activity的启动,生命周期,Intent的显隐式等属于Android开发的基础的基础,推荐各位学习一下。哪怕不进行正向开发,即使学到只能看懂代码逻辑的层次也对逆向有很大的帮助


简单总结
跳开屏:找到启动首页的代码,进入开屏类的onCreate方法,添加启动首页的代码
解锁功能:找到启动"捐赠"页面的代码,找调用启动代码的代码,找会员逻辑,修改会员逻辑

本帖子中包含更多资源

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

x
已有7人评分好评 金币 理由
xof + 1 + 1 很给力!
‭不知夜雨 + 1 很给力!
Memory2314 + 1 + 1
善始繁_克终寡 + 1
15227567171 + 1
青春向上 + 1 + 1 真详细,感谢分享。
Cambriolage + 1 + 1 很给力!

查看全部评分 总评分:好评 +4  金币 +7 

回复

使用道具 举报

2

主题

3669

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4726
好评
1
信誉
100
发表于 2025-2-8 18:19:49 | 显示全部楼层  来自 浙江
感谢楼主的分享
回复

使用道具 举报

229

主题

9654

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2994
好评
27
信誉
92

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

发表于 2025-2-8 18:24:05 来自手机  | 显示全部楼层  来自 广东
看看看看
回复

使用道具 举报

4

主题

1612

回帖

4184

积分

大学生

Rank: 5Rank: 5

金币
3051
好评
0
信誉
100
发表于 2025-2-8 18:26:29 来自手机  | 显示全部楼层  来自 吉林
看看
回复

使用道具 举报

69

主题

1781

回帖

8796

积分

硕士生

幼儿园扛把子

Rank: 6Rank: 6

金币
7107
好评
7
信誉
103
发表于 2025-2-8 18:27:26 来自手机  | 显示全部楼层  来自 湖南
感谢分享,看看隐藏
回复

使用道具 举报

19

主题

2292

回帖

8643

积分

硕士生

Rank: 6Rank: 6

金币
6200
好评
1
信誉
102

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

发表于 2025-2-8 18:28:00 来自手机  | 显示全部楼层  来自 福建
看看隐藏
回复

使用道具 举报

0

主题

977

回帖

3253

积分

大学生

Rank: 5Rank: 5

金币
3947
好评
0
信誉
100
发表于 2025-2-8 18:32:09 来自手机  | 显示全部楼层  来自 湖南
看看隐藏
回复

使用道具 举报

8

主题

3771

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4626
好评
8
信誉
124

MT论坛最佳新人考神

发表于 2025-2-8 18:33:15 来自手机  | 显示全部楼层  来自 广东
学无止境!感谢分享!
回复

使用道具 举报

41

主题

525

回帖

1886

积分

高中生

Rank: 4

金币
699
好评
0
信誉
100
发表于 2025-2-8 18:34:05 来自手机  | 显示全部楼层  来自 广东
学习大佬们的思路,感谢大佬分享!
回复

使用道具 举报

218

主题

5609

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
8152
好评
25
信誉
134

MT论坛最佳新人MT论坛活跃会员MT论坛帅哥MT论坛新人MT论坛灌水老大考神

发表于 2025-2-8 18:34:39 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

32

主题

4259

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7894
好评
22
信誉
107

MT论坛最佳新人

发表于 2025-2-8 18:41:28 来自手机  | 显示全部楼层  来自 河南
看看隐藏
回复

使用道具 举报

3

主题

2238

回帖

6467

积分

硕士生

Rank: 6Rank: 6

金币
4039
好评
0
信誉
100
发表于 2025-2-8 18:41:43 来自手机  | 显示全部楼层  来自 河南
感谢分享
回复

使用道具 举报

14

主题

1824

回帖

7517

积分

硕士生

Rank: 6Rank: 6

金币
4609
好评
0
信誉
101
发表于 2025-2-8 18:43:00 来自手机  | 显示全部楼层  来自 广东
谢谢分享
回复

使用道具 举报

12

主题

5247

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1594
好评
16
信誉
578

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

发表于 2025-2-8 18:45:32 来自手机  | 显示全部楼层  来自 广东
感谢分享哦
回复

使用道具 举报

23

主题

1644

回帖

4800

积分

大学生

小白

Rank: 5Rank: 5

金币
3660
好评
0
信誉
83

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

发表于 2025-2-8 18:50:00 来自手机  | 显示全部楼层  来自 山西
好多按这种都搞不了
回复

使用道具 举报

发表回复

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

本版积分规则

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