|
|
本帖最后由 正己 于 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等

通过免广告关键字来实现部分广告的去除
- java
- public void O(SaiUserInfo saiUserInfo, boolean z) {
- g0.i(BaseApp.getInstance(), saiUserInfo); //获取用户信息
- if (z) {
- v.c().q(SaiSPKey.appToken, saiUserInfo.getToken()); //获取Token
- }
- this.e.set(saiUserInfo);
- this.h.setValue(saiUserInfo.getPic()); //设置用户头像
- if (saiUserInfo.getLogin_type() == 1) { //判断登录状态,并设置用户信息
- this.g.set("点击登录");
- this.f.set(Boolean.FALSE);
- } else {
- this.g.set(saiUserInfo.getNickname());
- this.f.set(Boolean.TRUE);
- }
- ObservableField observableField = this.i;
- observableField.set("ID:" + saiUserInfo.getUser_id()); //获取用户ID
- ObservableField observableField2 = this.j;
- observableField2.set(SaiAppUtils.d(saiUserInfo.getInvited_count() + "人")); //获取用户邀请人数
- if (saiUserInfo.getInvited_count() > 0) {
- ObservableField observableField3 = this.k;
- observableField3.set(SaiAppUtils.d(N(saiUserInfo.getInvited_count()) + "天 "));
- } else {
- this.k.set(SaiAppUtils.d("0天"));
- }
- if (saiUserInfo.getFree_time() * 1000 > System.currentTimeMillis()) { //获取免广告时间
- this.n.set(0);
- this.m.set(d.a(Long.valueOf(saiUserInfo.getFree_time() * 1000)));
- this.l.set("剩余免广告:");
- BaseApp.getInstance().setFreeTime(saiUserInfo.getFree_time() * 1000);
- return;
- }
- this.l.set("邀请好友获得终身免广告特权");
- this.n.set(8);
- BaseApp.getInstance().setFreeTime(0L);
- }
复制代码
- java
- public void initData() {
- super.initData();
- if (!v.c().b(SaiSPKey.AGREE_PRIVATE, false)) {
- ((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
- [url=home.php?mod=space&uid=1892347]@Override[/url] // io.reactivex.functions.Consumer
- public final void accept(Object obj) {
- SaiSplashActivity.this.g((SaiPrivateEvent) obj);
- }
- }));
- a0.a.h(this);
- return;
- }
- try {
- s.a.d(); //广告SDK初始化
- } catch (Exception e2) {
- e0.b("===========>>> " + e2.getMessage());
- }
- int g2 = v.c().g(SaiSPKey.INSTANCE.getLaunchCount(), 0);
- if (g2 != 0) {
- if (!v.c().b("extend_java_aa", false)) {
- v.c().s("extend_java_aa", true);
- g2 = 0;
- }
- } else {
- v.c().s("extend_java_aa", true);
- }
- if (g2 == 0) {
- showLoaddingDialog();
- ((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
- @Override // io.reactivex.functions.Consumer
- public final void accept(Object obj) {
- SaiSplashActivity.this.i((SaiAppInitEvent) obj);
- }
- }));
- }
- g.a.a(g2);
- int i2 = g2 + 1;
- v.c().m(SaiSPKey.INSTANCE.getLaunchCount(), i2);
- c0 c0Var = c0.a;
- if (c0Var.f3990g == -1) {
- c0Var.f3990g = i2;
- }
- if (g2 != 0) {
- if (NetworkUtils.c()) {
- ((SaiSplashViewModel) this.viewModel).n();
- if (c0Var.l("1")) {
- showLoaddingDialog();
- SaiSplashAdActivity.invoke(this);
- finish();
- } else {
- n(b.DELAY);
- }
- } else {
- n(b.NONET);
- }
- } else {
- ((SaiSplashViewModel) this.viewModel).n();
- }
- if (i.c(d.f().toString(), c0Var.f3986c).equals(c0Var.j(R.string.app_cudgel))) {
- return;
- }
- e0.b("===========>>> app kill app_cudgel");
- System.exit(0);
- }
复制代码
赋值参考第六课52:08
- java
- .method public getFree_time()J
- .registers 3
- .line 1
- iget-wide v0, p0, Lcom/pencil/saibeans/SaiUserInfo;->free_time:J
- const-wide v0, 0x32d57bf5e8L
- return-wide v0
- .end method
复制代码
2.去除签名校验
吾爱破解安卓逆向入门教程《安卓逆向这档事》六、校验的N次方-签名校验对抗、PM代{过}{滤}理、IO重定向
1.核心破解,免签名安装
2.一键去签名工具
白描-动态代理Hook签名校验
3.手动分析签名校验
- java
- .method public static f()Ljava/util/List;
- .registers 2
- .annotation build Landroidx/annotation/NonNull;
- .end annotation
- .annotation system Ldalvik/annotation/Signature;
- value = {
- "()",
- "Ljava/util/List<",
- "Ljava/lang/String;",
- ">;"
- }
- .end annotation
- .line 1
- new-instance v0, Ljava/util/ArrayList;
- invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
- const-string v1, "F9:6C:E9:5F:D5:47:BE:DF:81:15:E3:71:8A:10:54:45"
- #创建了一个新的 ArrayList 实例,然后向列表中添加了一个字符串常量 "F9:6C:E9:5F:D5:47:BE:DF:81:15:E3:71:8A:10:54:45"
- invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
- return-object v0
- .end method
复制代码

3. 去除更新弹窗
- java
- public static boolean a(boolean z, SaiUpgradeInfo saiUpgradeInfo) {
- if (!a.b.b() && saiUpgradeInfo != null) {
- try {
- //获取版本号进行对比
- if (saiUpgradeInfo.getVersion_code() >= b.c.a.b.d.i()) {
- boolean b2 = v.c().b(SaiSPKey.INSTANCE.getUpgrade_dialog(), false);
- if (z || !b2) {
- if (saiUpgradeInfo.getIs_same() == 1) {
- v c = v.c();
- if (!c.b("appUpgrade_" + saiUpgradeInfo.getVersion_code(), false)) {
- new d(b.c.a.b.a.h(), saiUpgradeInfo).show();
- v c2 = v.c();
- c2.s("appUpgrade_" + saiUpgradeInfo.getVersion_code(), true);
- return true;
- }
- } else if (saiUpgradeInfo.getVersion_code() > b.c.a.b.d.i()) {
- new d(b.c.a.b.a.h(), saiUpgradeInfo).show();
- return true;
- } else if (z) {
- ToastUtils.v("已经是最新版本");
- }
- e0.b("========>>> 包升级更新:${it.url}");
- }
- } else if (z) {
- ToastUtils.v("已经是最新版本");
- }
- } catch (Exception unused) {
- }
- }
- return false;
- }
复制代码
4.布局优化
【吾爱破解安卓逆向入门教程《安卓逆向这档事》四、恭喜你获得广告&弹窗静默卡】
1.修改xml中的属性值

- 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春节】解题领红包活动,启动!
|
-
查看全部评分
总评分:好评 +5
金币 +5
|