我正在通過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