正如标题所说,我希望使用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