查找 xposed 钩子的方法
Find methods for xposed hooks
我目前正在 Android 8.0 上使用 xposed 框架。如何找到要挂钩的应用程序的所有方法名称?例如,我想挂钩添加新联系人时调用的方法。是否可以对 apk 进行逆向工程以将 logcat 输出插入所有方法,以显示调用了哪个方法?
有多种方法可以识别相关方法。
第一个也是最重要的一个是 official Android API 的知识。所有基于 Java/Kotlin 的应用程序在某些时候都使用 API 中定义的 classes 和方法。最重要的事实是,由于 Android API 属于 Android 而不是应用程序,因此无法对其进行混淆。
其次,您可以使用 Jadx, apktool、Ghidra、JEB 等工具对应用程序本身进行逆向工程...只需确保您使用的工具不会重命名 class 名称(例如,避免名称冲突或使混淆的 class 和方法名称更易读)或至少允许您始终向您显示原始 class 和方法名称。因为如果您使用由 APK 逆向工具生成的名称,则尝试通过名称挂钩方法将失败。
另外一个非常有用的工具是 frida-trace
,它可以识别 运行 程序的很多内部信息。只要执行的应用程序没有反调试或反 frida 措施,您就可以附加 frida-trace at any time to an app on a rooted device and create execution traces you can later use to hook the methods using xposed or directly using frida。
我目前正在 Android 8.0 上使用 xposed 框架。如何找到要挂钩的应用程序的所有方法名称?例如,我想挂钩添加新联系人时调用的方法。是否可以对 apk 进行逆向工程以将 logcat 输出插入所有方法,以显示调用了哪个方法?
有多种方法可以识别相关方法。
第一个也是最重要的一个是 official Android API 的知识。所有基于 Java/Kotlin 的应用程序在某些时候都使用 API 中定义的 classes 和方法。最重要的事实是,由于 Android API 属于 Android 而不是应用程序,因此无法对其进行混淆。
其次,您可以使用 Jadx, apktool、Ghidra、JEB 等工具对应用程序本身进行逆向工程...只需确保您使用的工具不会重命名 class 名称(例如,避免名称冲突或使混淆的 class 和方法名称更易读)或至少允许您始终向您显示原始 class 和方法名称。因为如果您使用由 APK 逆向工具生成的名称,则尝试通过名称挂钩方法将失败。
另外一个非常有用的工具是 frida-trace
,它可以识别 运行 程序的很多内部信息。只要执行的应用程序没有反调试或反 frida 措施,您就可以附加 frida-trace at any time to an app on a rooted device and create execution traces you can later use to hook the methods using xposed or directly using frida。