我正在通过Android中的Xposed框架。具体阅读博客 - http://d3adend.org/blog/?p=589潜在的对策,并在这些线上有几个问题。Xposed框架如何在Android中挂钩方法
因此,当我们使用Xposed挂钩一个方法时,框架将该方法作为本机并执行它想要挂钩的代码。那么stacktrace原始方法是如何被调用的?
com.example.hookdetection.DoStuff->getSecret //This one
de.robv.android.xposed.XposedBridge->invokeOriginalMethodNative
de.robv.android.xposed.XposedBridge->handleHookedMethod
com.example.hookdetection.DoStuff->getSecret //This one again
com.example.hookdetection.MainActivity->onCreate
android.app.Activity->performCreate
android.app.Instrumentation->callActivityOnCreate
android.app.ActivityThread->performLaunchActivity
android.app.ActivityThread->handleLaunchActivity
android.app.ActivityThread->access$800
android.app.ActivityThread$H->handleMessage
android.os.Handler->dispatchMessage
android.os.Looper->loop
android.app.ActivityThread->main
java.lang.reflect.Method->invokeNative
java.lang.reflect.Method->invoke
com.android.internal.os.ZygoteInit$MethodAndArgsCaller->run
com.android.internal.os.ZygoteInit->main
de.robv.android.xposed.XposedBridge->main
dalvik.system.NativeStart->main
此外,为什么它会在堆栈跟踪中出现两次。我想了解它们的执行顺序。
实际的方法是否运行?由于挂钩的方法代码执行,它不会理想地执行原始方法代码。那么我们如何能够以相同的方法添加一个stracktrace检测机制,并知道它将被替换。
你能解释一下这部分“这个扩展的启动过程中增加了一个额外的jar到classpath,并呼吁从那里方法某些地方“来自xposed教程。 https://github.com/rovo89/XposedBridge/wiki/Development-tutorial – Suraj