Android Xposed 框架开发中,想在所有的 Activity 在他们 OnCreate 的生命周期向某一地方输出一条日志,并记录这个 Activity 所在包名类名是什么,应该如何 hook?
先在此谢过大家了!
Android Xposed 框架开发中,想在所有的 Activity 在他们 OnCreate 的生命周期向某一地方输出一条日志,并记录这个 Activity 所在包名类名是什么,应该如何 hook?
先在此谢过大家了!
题主自己来回答啦
请注意题目说的是“所有应用”而不是某一应用,在查xposed api的时候看到这个
IXposedHookZygoteInit
Hook the initialization of Zygote process(es), from which all the apps are forked.
Implement this interface in your module's main class in order to be notified when Android is starting up. In IXposedHookZygoteInit, you can modify objects and
place hooks that should be applied for every app. Only the Android framework/system classes are available at that point in time. Use null as class loader for
XposedHelpers.findAndHookMethod(String, ClassLoader, String, Object...) and its variants.If you want to hook one/multiple specific apps, use IXposedHookLoadPackage instead.
也就是说,如果你想hook某一app,就用IXposedHookLoadPackage;如果是所有应用,那就要在zygote里做手脚。
题目过去很久了,不过为了防止以后有人再有同样的问题还是回答一下吧。不管是不是原来的问题
其实解决办法没有题主说的那么复杂。
首先,在MainActivity的oncreate里打下断点,然后进入debug,得到下面的调用栈
可以看到在oncreate之前执行的是performCreate,然后点击这一行,再旁边的窗口加上getClass(),就输出了当前的类名。因此hook Activity.performCreate即可。
至于hook Activity.onCreate大概也可以实现同样的效果,只不过这个hook到的是Activity调用super.onCreate的这一条语句,一般不是我们需要的。
同理可以hook各种生命周期方法。
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答902 阅读✓ 已解决
2 回答1k 阅读
2 回答953 阅读
1 回答922 阅读
2 回答770 阅读
直接hook,Activity类的onCreate应该就满足你的需求了呀.