【问题标题】:Finding a call to a non-existent DLL function查找对不存在的 DLL 函数的调用
【发布时间】:2020-05-12 15:42:36
【问题描述】:

我们其中一款产品的 Windows 版本与 Qt v597 中的多个 DLL 捆绑在一起。我们的一位客户在显示错误框时遇到问题,该框显示尝试访问 libxml2.dll(来自 Qt 的 DLL 之一)中的函数 xmlXPtrEval() 失败。事实上,与 Qt v597 DLL 捆绑在一起的 libxml2.dll 没有此名称的函数。

据我所知,错误调用是动态的(即,查找函数的尝试是在运行时完成的)并且在我们的应用程序外部,因为 libxml2.dll 不是我们的应用程序所依赖的 DLL .

有什么方法可以找出这个错误调用的原因吗?我假设调用是由某个地方的 DLL 进行的,Qt 或其他,但哪个?

【问题讨论】:

  • 不知道,但我们可以想象xmlXPtrEval 存在于二进制文件中,可能是宽字符形式。
  • 似乎libxml2.dll 是在没有 XPointer 支持的情况下构建的,并且可执行文件或其他库(如libxslt)与启用了 XPointer 的版本相关联.

标签: qt dll libxml2


【解决方案1】:

可以安装钩子来捕获函数调用吗?如果是动态调用,则可以从 LoadLibrary 执行并解析。如果无法更改 dll/app,也可以使用注入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    相关资源
    最近更新 更多