这不是严格的“逆向工程”,它主要与动态仪器有关。
那么,以与strace
允许您查看进程进行的系统调用或ftrace
查看函数调用相同的方式,Java 是否有类似的东西?
我感兴趣的是有一个.jar
在 javaVM 中运行的文件。
有什么方法可以检测或跟踪应用程序代码进行的所有 Java API 调用?
也就是说,无需对内容进行任何静态分析.jar
或无需对内容进行任何编辑.jar
(例如添加钩子)。理想情况下,等效于strace
或例如操纵的 javaVM的解决方案
这同样适用于 Android - 有没有办法跟踪应用程序进行的所有 Android 框架 API 调用(或其他本质上是 DalvikVM 的函数),而无需对 APK 文件进行任何编辑?环境/系统的所有其他编辑都很好。
在我的理想世界中,分析师在运行未编辑的应用程序(.jar
或.apk
)时会得到以下输出:
timestamp1: java.security.SecureRandom.getSeed() called. Arguments: (Number)
timestamp2: javax.security.cert.X509Certificate.checkValidity() called. Arguments: (null)
...
timestamp3: java.sql.Connection.prepareStatement() called. Arguments: ("SELECT * FROM X WHERE Y = W")