带有可执行JAR的Java项目;运行并从中检索数据

带有可执行JAR的Java项目;运行并从中检索数据,java,executable-jar,decompiling,Java,Executable Jar,Decompiling,在工作中,我使用Java应用程序(我在C-drive上找到了编译/可执行的JAR)。我希望能够通过代码从这个应用程序中获取一些信息。应用程序本身可能不存储信息,因此它必须以某种方式与遗留系统通信,我不确定如何进行通信,我看到了Servlet的痕迹(?),因此,我怀疑应用程序也有内置的“加密”(?) 我不想参与加密和登录过程等,所以我想我可以围绕当前的可执行jar构建一个Java项目,并像往常一样启动应用程序(通过“main”入口点“Start.jar”,但在执行后调用我想要的函数)(即,应用程序

在工作中,我使用Java应用程序(我在C-drive上找到了编译/可执行的JAR)。我希望能够通过代码从这个应用程序中获取一些信息。应用程序本身可能不存储信息,因此它必须以某种方式与遗留系统通信,我不确定如何进行通信,我看到了Servlet的痕迹(?),因此,我怀疑应用程序也有内置的“加密”(?)

我不想参与加密和登录过程等,所以我想我可以围绕当前的可执行jar构建一个Java项目,并像往常一样启动应用程序(通过“main”入口点“Start.jar”,但在执行后调用我想要的函数)(即,应用程序只是在后台正常运行)

这可能吗?还有其他方法吗?例如,可以连接到已经执行的Java应用程序并发出命令吗

到目前为止我都试过了

  • 下载了Eclipse,并创建了一个新项目
  • 使Eclipse“引用”外部JAR(Eclipse中有一个向导)
  • 在我的新项目中创建了一个新类,在这个类中,我启动了“main”可执行jar的“main”入口点(所有jar的结构都会弹出“IntelliSense”)。我还找到了我需要使用JD-GUI(Java反编译程序)向主过程提供的参数

  • 似乎从主过程内部调用了另一个过程,它位于不同的jar中,在Eclipse的调试窗口中,我看到了一个错误,这使我怀疑我当前的方法是否可行……可能是因为命令是从编译的jar发出的?是否“类路径”有问题?这看起来像是一个解决方案吗?但是,我对Java(主要是VBA和一些C#)没有经验。

    您可以使用选项启动应用程序的JVM,这些选项支持远程调试。然后您可以将eclipse调试器连接到此JVM


    您可以使用启用远程调试的选项启动应用程序的JVM。然后您可以将eclipse调试器连接到此JVM


    根据您的问题,我猜您的应用程序没有可以编写代码的Java API。当然,这是最简单的方法。因此,如果您没有检查,请先进行检查

    假设您没有API来编写代码,我认为您的方法是正确的。但这可能很难做到,因为您基本上是盲目地试图弄清楚应用程序在做什么。远程调试可能会解决部分问题


    如果您确定它正在通过网络发送请求,可能会有一个稍微简单一点的解决方案。您可以使用Wireshark之类的工具查看它正在创建什么。然后,您可以让应用程序创建类似于此的请求,并将其发送到该目标。这当然假设请求未加密。在这种情况下您可能运气不好。

    根据您的问题,我猜您的应用程序没有可以编写代码的Java API。当然,这是最简单的方法。因此,如果您没有检查,请先进行检查

    假设您没有API来编写代码,我认为您的方法是正确的。但这可能很难做到,因为您基本上是盲目地试图弄清楚应用程序在做什么。远程调试可能会解决部分问题


    如果您确定它正在通过网络发送请求,可能会有一个稍微简单一点的解决方案。您可以使用Wireshark之类的工具查看它正在创建什么。然后,您可以让应用程序创建类似于此的请求,并将其发送到该目标。这当然假设请求未加密。在这种情况下你可能不走运。艾伦,谢谢你的回答。我一定会考虑使用WiReSARK,我看到WiReSARK的一个便携版本,这是很棒的(用户权限……嗨)艾伦。谢谢你的回答。我一定会考虑使用WiReSARK,我看到WiReSARK的一个便携版本,这是很好的。(用户权限…)嗨,维特克。谢谢你的回答。我实际上已经试过调试了。但是我无法让它工作。我将看一看你发布的教程,然后再试一次……嗨,维特克。谢谢你的回答。我实际上已经试过调试。但是我无法让它工作。我将看一看你发布的教程,然后再给它一次测试去吧。。。