从java调用dll,编辑dll源代码

Posted

技术标签:

【中文标题】从java调用dll,编辑dll源代码【英文标题】:invocation of dll from java , edit dll source code 【发布时间】:2015-05-19 12:57:36 【问题描述】:

我正在使用来自 github 的开源 jar,它运行正常。在使用库 API 时,程序会弹出一个消息框并等待用户单击确定按钮。我通过调试器检查了它,显然本机目录中的dll 文件被调用,它负责消息框,单击确定后输出是例外。我想我的问题是如何跳过此消息框,或者我如何才能以编程方式单击确定按钮,以便在单击按钮之前程序不会停止。我尝试编辑dll 文件,但它是二进制代码,没有办法编辑 jar 文件并重新编译它以再次工作,所以我有点卡住了。

我相信,如果我可以观看源代码,我可以更改函数本身,它应该可以工作,但我无法完成。我知道编译前的dll 文件可能是用 C、C++ 或 C# 编写的,所以我想唯一的问题是获取 dll 文件本身。我不相信这里需要示例代码。 提前谢谢!

【问题讨论】:

如果可以在没有此弹出窗口的情况下调用 DLL,请先查看库的代码。 我理解正确吗?...这是一个开源项目,在其发行版中包含一个 DLL,但没有发布 DLL 的源代码?什么是DLL?以及如何从项目的 Java 源中调用它? 【参考方案1】:

要对 DLL 进行反编译/逆向工程(如果用 C# 编写),您可以使用 JetBrains 提供的免费 .NET 反编译器:dotPeek。如果用 C/C++ 编写,对 DLL 进行逆向工程会困难得多,我建议使用某种测试自动化软件。 Ranorex 是付费的,SikuliX 是免费的,可能可以满足您的需求。

【讨论】:

以上是关于从java调用dll,编辑dll源代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Delphi 中调试从 Java 调用的 DLL?

java怎样调用dll动态库实现打印。

java 调用C写的DLL

请问java调用dll里的一个方法

使用 JNA 从 Java 调用 C++ dll 方法并避免方法名称修改

java调用dll