Activity

是安卓系统中负责与用户交互的核心组件。可以理解为App里的每一个可视化页面都是一个Activity。

1
2
3
4
5
6
public class MyActivity extends AppCompatActivity{
protected void onCreate(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContenView(R.layout.activity_main); //加载视图文件
}
}

AndroidManifest.xml是配置文件,使用Activity组件时需要在AndroidManifest.xml里进行注册。

android:exported="true"表示允许外部引用该组件。

1
2
3
4
5
6
7
8
9
10
<activity
android:label="@string/app_name"
android:name="com.p002zj.wuaipojie.p003ui.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

生命周期

Activity生命周期有7个核心回调方法,开发者重写这些回调方法能控制Activity在不同状态下的行为,如:页面切换后台暂停播放、切前台恢复播放。

frida反调试绕过

分为:java层检测、so层检测

思路一:遇到单独作为检测frida的so文件,直接删除该so文件即可;遇到参与业务逻辑的so文件有检测frida的函数,可改其函数或者控制其加载伪造的so文件(动态内存修改)。

思路二:遇到检测frida指纹信息的反调试,如:检测默认端口、firda运行的进程。

frida的Module对象

常用于加载指定so文件。

常见获取方式:

Module.load():需要指定加载so文件

Process.enumerateModules():直接返回所有加载的so文件

常见属性:

  • name:模块名称
  • base:类型为NativePointer的模块地址
  • size:大小
  • path:完整文件系统路径