如何应对Andriod面试官 -> 如何 Hook Activity 的启动流程?

💡 原文中文,约15600字,阅读约需38分钟。
📝

内容提要

本章继续解说AMS相关的知识点,包括Hook Activity的发动流程和AndroidManifest.xml中的Activity注册。在发动Activity时,如果没有在AndroidManifest中注册,会抛出异常。Hook Activity的本质是绕过AMS的检查,可以发动未在AndroidManifest中声明的Activity。在发动流程中,需要找到Hook点,一般找public static的方法。可以通过Hook IActivityManager和Hook Handler来实现。

🎯

关键要点

  • 本章解说AMS相关知识点,包括Hook Activity的发动流程和AndroidManifest.xml中的Activity注册。
  • 发动Activity时,如果没有在AndroidManifest中注册,会抛出异常。
  • Hook Activity的本质是绕过AMS的检查,可以发动未在AndroidManifest中声明的Activity。
  • 在发动流程中,需要找到Hook点,一般找public static的方法。
  • 可以通过Hook IActivityManager和Hook Handler来实现。
  • AndroidManifest.xml中的Activity注册是通过解析Manifest文件来完成的。
  • 如果Activity未注册,抛出ActivityNotFoundException异常。
  • Hook Activity的过程需要替换真实的Activity为假的Activity,待AMS验证后再替换回真实Activity。
  • Instrumentation和IActivityManager是常用的Hook点。
  • 提供了360的Hook IActivityManager的实现示例。
  • AMS验证之前和之后的Hook实现示例。
  • 下一章将讨论PackageManagerService。

延伸问答

什么是Hook Activity的本质?

Hook Activity的本质是绕过AMS的检查,可以发动未在AndroidManifest中声明的Activity。

如果Activity未在AndroidManifest中注册,会发生什么?

如果Activity未注册,将抛出ActivityNotFoundException异常。

如何实现Hook Activity的过程?

实现Hook Activity的过程需要替换真实的Activity为假的Activity,待AMS验证后再替换回真实Activity。

在Hook Activity时,常用的Hook点有哪些?

常用的Hook点包括Instrumentation和IActivityManager。

如何在AndroidManifest.xml中注册Activity?

Activity的注册是通过解析AndroidManifest.xml文件来完成的。

在启动Activity时,如何处理Intent?

在启动Activity时,需要通过AMS的startActivity方法进行Intent的处理,并检查返回结果。

➡️

继续阅读