返回列表 发新帖

《安卓逆向这档事》番外实战篇1-某电影视全家桶分析

  [复制链接]

91

主题

3807

回帖

2万

积分

博士后

萌新

Rank: 8Rank: 8

金币
10363
好评
335
信誉
278

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

QQ
发表于 2023-7-30 11:09:28 | 显示全部楼层 | 阅读模式  来自 福建
本帖最后由 正己 于 2024-5-11 16:34 编辑




一、课程目标
---
借助已学知识完成样本软件的去除签名校验、去广告与更新、布局优化

二、工具
---
1.样本软件
2.jadx-gui
3.MT管理器/NP管理器
4.算法助手
5.开发助手

三、课程内容
---
全家桶:顾名思义,这些影视app都是一套源码开发的,多个渠道分发只是换了个包名和皮肤
《安卓逆向这档事》疑难解答-建议征集贴
【吾爱破解安卓逆向入门教程《安卓逆向这档事》三、初识smali,vip终结者】
【【Android逆向】16分钟动画讲解java以及对应的smali代码】
PS:讲得特别好,建议对于smali还不熟悉的朋友可以多看几遍!!!
1.去除广告

关键字:initsdk、loadad、initad等

通过免广告关键字来实现部分广告的去除
  1. java
  2. public void O(SaiUserInfo saiUserInfo, boolean z) {  
  3.         g0.i(BaseApp.getInstance(), saiUserInfo);  //获取用户信息
  4.         if (z) {  
  5.             v.c().q(SaiSPKey.appToken, saiUserInfo.getToken());  //获取Token
  6.         }  
  7.         this.e.set(saiUserInfo);  
  8.         this.h.setValue(saiUserInfo.getPic());  //设置用户头像
  9.         if (saiUserInfo.getLogin_type() == 1) {  //判断登录状态,并设置用户信息
  10.             this.g.set("点击登录");  
  11.             this.f.set(Boolean.FALSE);  
  12.         } else {  
  13.             this.g.set(saiUserInfo.getNickname());  
  14.             this.f.set(Boolean.TRUE);  
  15.         }  
  16.         ObservableField observableField = this.i;  
  17.         observableField.set("ID:" + saiUserInfo.getUser_id());  //获取用户ID
  18.         ObservableField observableField2 = this.j;  
  19.         observableField2.set(SaiAppUtils.d(saiUserInfo.getInvited_count() + "人"));  //获取用户邀请人数
  20.         if (saiUserInfo.getInvited_count() > 0) {  
  21.             ObservableField observableField3 = this.k;  
  22.             observableField3.set(SaiAppUtils.d(N(saiUserInfo.getInvited_count()) + "天 "));  
  23.         } else {  
  24.             this.k.set(SaiAppUtils.d("0天"));  
  25.         }  
  26.         if (saiUserInfo.getFree_time() * 1000 > System.currentTimeMillis()) {  //获取免广告时间
  27.             this.n.set(0);  
  28.             this.m.set(d.a(Long.valueOf(saiUserInfo.getFree_time() * 1000)));  
  29.             this.l.set("剩余免广告:");  
  30.             BaseApp.getInstance().setFreeTime(saiUserInfo.getFree_time() * 1000);  
  31.             return;  
  32.         }  
  33.         this.l.set("邀请好友获得终身免广告特权");  
  34.         this.n.set(8);  
  35.         BaseApp.getInstance().setFreeTime(0L);  
  36.     }
复制代码

  1. java
  2. public void initData() {
  3.         super.initData();
  4.         if (!v.c().b(SaiSPKey.AGREE_PRIVATE, false)) {
  5.             ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiPrivateEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.d
  6.                 [url=home.php?mod=space&uid=1892347]@Override[/url] // io.reactivex.functions.Consumer
  7.                 public final void accept(Object obj) {
  8.                     SaiSplashActivity.this.g((SaiPrivateEvent) obj);
  9.                 }
  10.             }));
  11.             a0.a.h(this);
  12.             return;
  13.         }
  14.         try {
  15.             s.a.d();  //广告SDK初始化
  16.         } catch (Exception e2) {
  17.             e0.b("===========>>> " + e2.getMessage());
  18.         }
  19.         int g2 = v.c().g(SaiSPKey.INSTANCE.getLaunchCount(), 0);
  20.         if (g2 != 0) {
  21.             if (!v.c().b("extend_java_aa", false)) {
  22.                 v.c().s("extend_java_aa", true);
  23.                 g2 = 0;
  24.             }
  25.         } else {
  26.             v.c().s("extend_java_aa", true);
  27.         }
  28.         if (g2 == 0) {
  29.             showLoaddingDialog();
  30.             ((SaiSplashViewModel) this.viewModel).b(b.s.c.b.a().c(SaiAppInitEvent.class).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer() { // from class: b.l.i.v.a
  31.                 @Override // io.reactivex.functions.Consumer
  32.                 public final void accept(Object obj) {
  33.                     SaiSplashActivity.this.i((SaiAppInitEvent) obj);
  34.                 }
  35.             }));
  36.         }
  37.         g.a.a(g2);
  38.         int i2 = g2 + 1;
  39.         v.c().m(SaiSPKey.INSTANCE.getLaunchCount(), i2);
  40.         c0 c0Var = c0.a;
  41.         if (c0Var.f3990g == -1) {
  42.             c0Var.f3990g = i2;
  43.         }
  44.         if (g2 != 0) {
  45.             if (NetworkUtils.c()) {
  46.                 ((SaiSplashViewModel) this.viewModel).n();
  47.                 if (c0Var.l("1")) {
  48.                     showLoaddingDialog();
  49.                     SaiSplashAdActivity.invoke(this);
  50.                     finish();
  51.                 } else {
  52.                     n(b.DELAY);
  53.                 }
  54.             } else {
  55.                 n(b.NONET);
  56.             }
  57.         } else {
  58.             ((SaiSplashViewModel) this.viewModel).n();
  59.         }
  60.         if (i.c(d.f().toString(), c0Var.f3986c).equals(c0Var.j(R.string.app_cudgel))) {
  61.             return;
  62.         }
  63.         e0.b("===========>>> app kill app_cudgel");
  64.         System.exit(0);
  65.     }
复制代码


赋值参考第六课52:08
  1. java
  2. .method public getFree_time()J
  3.     .registers 3

  4.     .line 1
  5.     iget-wide v0, p0, Lcom/pencil/saibeans/SaiUserInfo;->free_time:J

  6.     const-wide v0, 0x32d57bf5e8L

  7.     return-wide v0
  8. .end method
复制代码


2.去除签名校验
吾爱破解安卓逆向入门教程《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向
1.核心破解,免签名安装
2.一键去签名工具
白描-动态代理Hook签名校验
3.手动分析签名校验
  1. java
  2. .method public static f()Ljava/util/List;
  3.     .registers 2
  4.     .annotation build Landroidx/annotation/NonNull;
  5.     .end annotation

  6.     .annotation system Ldalvik/annotation/Signature;
  7.         value = {
  8.             "()",
  9.             "Ljava/util/List<",
  10.             "Ljava/lang/String;",
  11.             ">;"
  12.         }
  13.     .end annotation

  14.     .line 1
  15.     new-instance v0, Ljava/util/ArrayList;

  16.     invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

  17.     const-string v1, "F9:6C:E9:5F:D5:47:BE:DF:81:15:E3:71:8A:10:54:45"
  18.     #创建了一个新的 ArrayList 实例,然后向列表中添加了一个字符串常量 "F9:6C:E9:5F:D5:47:BE:DF:81:15:E3:71:8A:10:54:45"

  19.     invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z


  20.     return-object v0
  21. .end method

复制代码



3. 去除更新弹窗
  1. java
  2. public static boolean a(boolean z, SaiUpgradeInfo saiUpgradeInfo) {  
  3.         if (!a.b.b() && saiUpgradeInfo != null) {  
  4.             try {  
  5.                 //获取版本号进行对比
  6.                 if (saiUpgradeInfo.getVersion_code() >= b.c.a.b.d.i()) {  
  7.                     boolean b2 = v.c().b(SaiSPKey.INSTANCE.getUpgrade_dialog(), false);  
  8.                     if (z || !b2) {  
  9.                         if (saiUpgradeInfo.getIs_same() == 1) {  
  10.                             v c = v.c();  
  11.                             if (!c.b("appUpgrade_" + saiUpgradeInfo.getVersion_code(), false)) {  
  12.                                 new d(b.c.a.b.a.h(), saiUpgradeInfo).show();  
  13.                                 v c2 = v.c();  
  14.                                 c2.s("appUpgrade_" + saiUpgradeInfo.getVersion_code(), true);  
  15.                                 return true;  
  16.                             }  
  17.                         } else if (saiUpgradeInfo.getVersion_code() > b.c.a.b.d.i()) {  
  18.                             new d(b.c.a.b.a.h(), saiUpgradeInfo).show();  
  19.                             return true;  
  20.                         } else if (z) {  
  21.                             ToastUtils.v("已经是最新版本");  
  22.                         }  
  23.                         e0.b("========>>> 包升级更新:${it.url}");  
  24.                     }  
  25.                 } else if (z) {  
  26.                     ToastUtils.v("已经是最新版本");  
  27.                 }  
  28.             } catch (Exception unused) {  
  29.             }  
  30.         }  
  31.         return false;  
  32.     }
复制代码

4.布局优化
【吾爱破解安卓逆向入门教程《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡】

1.修改xml中的属性值



  1. android:visibility="gone"
复制代码

2.上帝模式优化布局

某影视邀请协议分析

四、课后小作业
---
完成剩余布局的优化并截图回复
最终效果图:

五、答疑
---

待更新

六、视频及课件地址
---

百度云
阿里云
哔哩哔哩
PS:解压密码都是52pj,阿里云由于不能分享压缩包,所以下载exe文件,双击自解压

七、其他章节
---

《安卓逆向这档事》一、模拟器环境搭建  
《安卓逆向这档事》二、初识APK文件结构、双开、汉化、基础修改  
《安卓逆向这档事》三、初识smail,vip终结者  
《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡  
《安卓逆向这档事》五、1000-7=?&动态调试&Log插桩  
《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向  
《安卓逆向这档事》七、Sorry,会Hook真的可以为所欲为-Xposed快速上手(上)模块编写,常用Api  
《安卓逆向这档事》八、Sorry,会Hook真的可以为所欲为-xposed快速上手(下)快速hook  
《安卓逆向这档事》九、密码学基础、算法自吐、非标准加密对抗  
《安卓逆向这档事》十、不是我说,有了IDA还要什么女朋友?  
《安卓逆向这档事》十二、大佬帮我分析一下  
《安卓逆向这档事》番外实战篇1-某电全家桶  
《安卓逆向这档事》十三、是时候学习一下Frida一把梭了(上)
《安卓逆向这档事》十四、是时候学习一下Frida一把梭了(中)
《安卓逆向这档事》十五、是时候学习一下Frida一把梭了(下)
《安卓逆向这档事》十六、是时候学习一下Frida一把梭了(终)
《安卓逆向这档事》十七、你的RPCvs佬的RPC
《安卓逆向这档事》番外实战篇2-【2024春节】解题领红包活动,启动!
已有7人评分好评 金币 理由
半缘卿 + 1
龙一 + 1 赞一个!
久雾ovo + 1 + 1
zlnxlzht + 1 + 1 很给力!
凉客 + 1
送你一朵小红花 + 1 + 1
By陈心弦 + 1 赞一个!

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

回复

使用道具 举报

4

主题

752

回帖

2694

积分

大学生

Rank: 5Rank: 5

金币
3037
好评
1
信誉
100

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

发表于 2023-7-30 11:13:19 来自手机  | 显示全部楼层  来自 广东
大佬收下我的膝盖
回复

使用道具 举报

56

主题

3619

回帖

8852

积分

硕士生

6

Rank: 6Rank: 6

金币
657
好评
43
信誉
145

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

QQ
发表于 2023-7-30 11:14:02 来自手机  | 显示全部楼层  来自 河南
看看大佬
回复

使用道具 举报

0

主题

3087

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1893
好评
0
信誉
100
发表于 2023-7-30 11:15:16 | 显示全部楼层  来自 河北
感谢分享
回复

使用道具 举报

24

主题

1052

回帖

4277

积分

大学生

Rank: 5Rank: 5

金币
1698
好评
21
信誉
100

考神

QQ
发表于 2023-7-30 11:15:51 来自手机  | 显示全部楼层  来自 湖南
学习学习
回复

使用道具 举报

39

主题

5418

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4480
好评
18
信誉
108
发表于 2023-7-30 11:16:10 来自手机  | 显示全部楼层  来自 北京
看看隐藏
回复

使用道具 举报

0

主题

3304

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
9978
好评
0
信誉
100

MT论坛新人

发表于 2023-7-30 11:16:20 来自手机  | 显示全部楼层  来自 四川
感谢分享
回复

使用道具 举报

76

主题

4557

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4954
好评
30
信誉
79

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

发表于 2023-7-30 11:16:34 来自手机  | 显示全部楼层  来自 河北
学习一下
回复

使用道具 举报

9

主题

6827

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7769
好评
1
信誉
100
发表于 2023-7-30 11:17:45 来自手机  | 显示全部楼层  来自 四川
感谢分享
回复

使用道具 举报

18

主题

721

回帖

2288

积分

大学生

Rank: 5Rank: 5

金币
308
好评
10
信誉
128
发表于 2023-7-30 11:21:42 来自手机  | 显示全部楼层  来自 江苏
看看蒸鸡
回复

使用道具 举报

14

主题

2090

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4232
好评
3
信誉
100

MT论坛最佳新人MT论坛新人

发表于 2023-7-30 11:22:07 来自手机  | 显示全部楼层  来自 广东
看看大佬
回复

使用道具 举报

20

主题

7881

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2435
好评
11
信誉
100
发表于 2023-7-30 11:23:38 来自手机  | 显示全部楼层  来自 湖南
进来看看
回复

使用道具 举报

85

主题

2095

回帖

8050

积分

硕士生

Rank: 6Rank: 6

金币
3192
好评
38
信誉
85
发表于 2023-7-30 11:24:12 来自手机  | 显示全部楼层  来自 浙江
谢谢分享
回复

使用道具 举报

13

主题

3126

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5042
好评
1
信誉
100
发表于 2023-7-30 11:25:06 来自手机  | 显示全部楼层  来自 山西
感谢分享
回复

使用道具 举报

19

主题

6211

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2129
好评
0
信誉
100
发表于 2023-7-30 11:25:39 来自手机  | 显示全部楼层  来自 安徽
感谢分享
回复

使用道具 举报

发表回复

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

本版积分规则

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