正如標題所說,我希望使用xposed記錄從應用程序中調用的所有方法,直到它停止。我只想記錄類名,方法名,不想勾選所有方法。 我嘗試了這段代碼,但沒有找到getMethod錯誤。在Xposed中記錄所有在應用程序中調用的方法
findAndHookMethod("java.lang.Class", lpparam.classLoader, "getMethod", String.class, Object.class, new XC_MethodHook()
在此先感謝!
正如標題所說,我希望使用xposed記錄從應用程序中調用的所有方法,直到它停止。我只想記錄類名,方法名,不想勾選所有方法。 我嘗試了這段代碼,但沒有找到getMethod錯誤。在Xposed中記錄所有在應用程序中調用的方法
findAndHookMethod("java.lang.Class", lpparam.classLoader, "getMethod", String.class, Object.class, new XC_MethodHook()
在此先感謝!
正如前面提到的,由於Xposed的開銷,Xposed不是這種情況。
最簡單的解決方案就是使用Google提供的dmtracedump。大多數x86 Android圖像和模擬器都帶有可調試標誌(ro.debuggable),因此您甚至可以將它用於閉源應用程序。
此外,已知其他工具(如Emma)也可與Android一起使用,但這些工具可能需要修改源代碼。
沒有像你似乎在搜索的任何一種線路解決方案。
掛鉤所有方法將讓應用程序從它開始直到停止記錄哪些方法被調用(有點 - 見下文),但如果(由於某種原因)你不想鉤住所有方法,唯一的解決方案是我可以想到的是修改Java虛擬機本身(不是我推薦。)
是(在某種程度上)的作品
我所做的就是第一次使用apktool反編譯我的APK,並獲得名稱的解決方案所有類的所有方法。 然後,我使用xposed鉤入每個類的每個單獨的方法,並打印到dlog當前函數名稱。
爲什麼只有那種工作
Xposed具有每當它鉤住方法的開銷。對於一般使用xposed應用程序,它不是很多。但是,當你開始連接應用程序的每一種方法時,開銷很快會變得非常大 - 很多以至於上述方法適用於小應用程序,但對於任何大型應用程序,它很快會導致應用程序掛起然後崩潰。
還排序的,工程
FRIDA另一種方法是注入JavaScript來本地應用的方式。他們告訴你如何記錄所有的函數調用。在上面的鏈接中,他們將所有函數調用記錄在一段python代碼中,相同的代碼也適用於Android。
謝謝您的回答:) – LieuLiau
有一種方法可以記錄所有Java方法。修改XposedBridge。
Xposed通過XposedBridge.java的方法 鉤Java方法 「handleHookedMethod(會員方法,INT originalMethodId,對象additionalInfoObj,的thisObject,對象[]參數)」
Log.v(TAG, "className " + method.getClass().getName() + ",methodName " + method.getName());
掛鉤* *所有由一個應用程序調用的方法幾乎不可能。如果您要鉤住用於打印日誌的方法,該怎麼辦?如果你只想在應用中看到一個靜態的方法列表,你可以使用'apktool'來反編譯APK文件。 –
我不想鉤住所有方法。我只想記錄從它開始直到我停止它的應用程序調用的方法。 – LieuLiau