4
安卓四大组件
| 组件 | 描述 |
|---|---|
| activity 活动 | 在应用中的一个Activity可以用来表示一个界面,意思可以理解为“活动”,即一个活动开始,代表 Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管理。 简单来讲就是界面,或者说是一个函数,函数包含界面。 |
| Service(服务) | 在后台不需要用户界面的应用组件 |
| Broadcast Receiver(广播接收器) | 接受广播信息 用来接收类似于时区改变,电量高低等等系统信息,应用接受了这些系统信息之后就可以作出相对应响应 |
| Content Provider(内容提供者) | 应用程序间通讯,win上有类似的。 |
等待广告
就是下面这玩意

通过打开MT的activity记录,(有点类似于堆栈回溯),找到这个adactivity

换到NP转为java代码

//
// Decompiled by Jadx (from NP Manager)
//
package com.zj.wuaipojie.ui;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
import com.zj.wuaipojie.ui.AdActivity$.ExternalSyntheticLambda0;
import kotlin.Metadata;
@Metadata(d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\b\u0010\u0003\u001a\u00020\u0004H\u0002J\b\u0010\u0005\u001a\u00020\u0004H\u0002J\u0012\u0010\u0006\u001a\u00020\u00042\b\u0010\u0007\u001a\u0004\u0018\u00010\bH\u0014¨\u0006\t"}, d2 = {"Lcom/zj/wuaipojie/ui/AdActivity;", "Landroidx/appcompat/app/AppCompatActivity;", "()V", "jump", "", "loadAd", "onCreate", "savedInstanceState", "Landroid/os/Bundle;", "app_release"}, k = 1, mv = {1, 7, 1}, xi = 48)
/* compiled from: AdActivity.kt */
public final class AdActivity extends AppCompatActivity {
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(2131427363);
loadAd();
}
private final void jump() {
startActivity(new Intent((Context) this, ChallengeThird.class));
finish();
}
private final void loadAd() {
new Handler().postDelayed(new ExternalSyntheticLambda0(this), 3000);
}
/* renamed from: loadAd$lambda-0 */
private static final void m0loadAd$lambda-0(AdActivity adActivity) {
adActivity.jump();
}
}
重点在于这个
写了一个线程 并等待三秒钟

换到smali就是这里

现在进去就没有等待广告了

版本更新弹窗
涉及一些activity生命周期的内容


本来其实应该有的,但我可能因为断网进入所以没了

方法是更改versioncode,也就是更改版本号

一号弹窗
这里需要用到算法助手里面这个日志

点进去最后一个
在我看来其实也像一个栈堆回溯

注意到这个

进mt搜 搜得到 但不知道为什么在np里搜不到。。
下拉几个找到一号弹窗的地方
把show方法注释掉

ok

二号弹窗
如上
横幅广告
这玩意要用到一个开发助手看布局
通过资源id找到这里

可以更改这里的长款,也可以添加一句隐藏

ok

5
这里主要讲的是Android上面的动调
第一个是要我们做好debug的设置
分为四种方法
方法一:在AndroidManifest.xml里添加可调试权限
android:debuggable="true"
方法二:XappDebug模块hook对应的app
项目地址
方法三:Magisk命令(重启失效)
复制代码 隐藏代码1. adb shell #adb进入命令行模式
2. su #切换至超级用户
3. magisk resetprop ro.debuggable 1
4. stop;start; #一定要通过该方式重启
方法四:刷入MagiskHide Props Config模块(永久有效,但我这两台手机都不行,哭死,呜呜呜)
一般来说,在4选项中如果有ro.debuggable那就直接修改
没有的话就选5

修改ro.debuggable的值为1
。
ok打开jeb,搜索字符串找到这里

可以看到这里的check是关键

两个判断是否是flag

然后我们直接在出口处下断

p1是关键
。
动调
ok我们进行动调

开始

附到进程上

运行到断点处 进入base方法,在出口处看到i字符串
这个是根据用户名算出来的

ok

插桩
通过在代码里插入一些代码,把程序进行中的关键信息,以log日志的形式输出出来。

重命名

插入调用命令

开启算法助手捕获

流程走一遍就在日志里看到了
