我想收集在真实设备上运行的 Android 应用程序发出的所有 API 调用(具有 root 权限,obvs)。
对于 API 调用,我的意思是在对象上调用的方法,例如: ConnectivityManager
我认为我可以使用 Xposed 框架检测所有方法,但可能存在一种更简单的方法……一种“高级 strace”。
否则监控堆栈跟踪就足够了......
你有什么建议?
我想收集在真实设备上运行的 Android 应用程序发出的所有 API 调用(具有 root 权限,obvs)。
对于 API 调用,我的意思是在对象上调用的方法,例如: ConnectivityManager
我认为我可以使用 Xposed 框架检测所有方法,但可能存在一种更简单的方法……一种“高级 strace”。
否则监控堆栈跟踪就足够了......
你有什么建议?
您可以通过 -- http://newandroidbook.com/tools/jtrace.html查看 Binder 方法和其他 strace 功能
但是,我认为您希望使用https://github.com/AndroidHooker/hooker技术拦截 API 调用。还有其他挂钩技术,例如IntroSpy - https://www.sensepost.com/blog/2016/android-hooking-with-introspy - 但它们看起来不适用于您的情况。
您可能会遇到存在反挂钩技术的情况——http: //d3adend.org/blog/ ?p=589 ,所以我建议有一种方法来替换该代码并重新打包 APK—— https://github .com/oguzhantopgul/AppManipulator
这本书,Hacking Android,涵盖了使用 IntroSpy 和 XposedFramework 进行挂钩。我想你会喜欢 XposedBridgeAPI 的输出日志——http://blog.attify.com/2015/01/04/xposed-framework-android-hooking/——你可以在这里找到它的开发文档—— https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
此外,本书还涵盖了 Android 应用逆向者和渗透测试人员更常见的做法,即使用Frida工具。特别是,我认为 appmon -- http://dpnishant.github.io/appmon/ -- 扩展是最相关的(支持 root 和非 root 特权访问),但你也可以看看从NowSecure cycript的扩展版本- https://www.nowsecure.com/blog/2016/09/02/cycript-on-steroids-pumping-up-portability-and-performance-with-frida/
实现全局 Java 调用收集的最佳方式是检测 Androis OS 的 ART/DVM。在这里,您可以找到适用于 AOSP(5.0 Lollipop,也适用于 6.0 Marshmallow)的最小修补程序,以收集目标应用程序的所有 Java 调用: https ://stackoverflow.com/questions/33478647/android-app- java-jni-call-hooking-strategies
然后,您可以使用一些正则表达式将 API 调用与应用程序调用区分开来。