我有一个用 JSP 编写的 Web 应用程序,它运行在我想要 RE 的 tomcat 6 服务器上。我已经反编译了与 Web 应用程序关联的 .jars。源代码被严重混淆,使得理解执行流程非常耗时。由于我处于时间限制下,因此这种方式进行逆向工程是不可行的。
有没有办法强制 JVM 记录所有带参数的方法调用?这可以通过诸如 VisualVM 之类的分析器来完成吗?
我有一个用 JSP 编写的 Web 应用程序,它运行在我想要 RE 的 tomcat 6 服务器上。我已经反编译了与 Web 应用程序关联的 .jars。源代码被严重混淆,使得理解执行流程非常耗时。由于我处于时间限制下,因此这种方式进行逆向工程是不可行的。
有没有办法强制 JVM 记录所有带参数的方法调用?这可以通过诸如 VisualVM 之类的分析器来完成吗?
好消息是它几乎没有被混淆。我没有看到任何字符串加密,这是每个商业混淆器所做的一件事。我唯一看到的是基本的类/方法重命名。很可能他们只是通过 Proguard 运行它。
坏消息是,即使模糊处理很弱,阅读仍然很痛苦。(哎呀,对于一个庞大的代码库,仅仅通读原始的注释源代码通常很痛苦!)但是除了费力地阅读它之外,您无能为力。想出有意义的名字来重命名一切显然不是可以自动完成的。这是人类传统上介入的地方。
如果他们碰巧在重命名的部分中包含了一个开源库,您可以匹配它并自动将所有这些部分重命名回原始部分,但我没有看到任何迹象。
最终,这只是逆向工程的问题。至少你比使用 x86 逆向工程要好得多。
这里唯一真正的问题是:
“有没有办法强制 JVM 记录所有带参数的方法调用?”
http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
在搜索文档时我没有看到任何明显的东西,这是广泛的。
那里有 Java 反混淆框架,质量各不相同。您可以将源代码下载到 JVM 并自行检测吗?参见:https : //stackoverflow.com/questions/2026093/is-jvm-open-source-code
我使用http://mchr3k.github.io/org.intrace/找到了一个不错的解决方案。它允许我选择我想跟踪(或不跟踪)的类,显示入口和返回到带有参数和返回值的方法。