如何通过C 代码低级别调试COM DLL(FIREFOX插件)方法,而无需调试信息



给定以下情况:

  • 某些旧Firefox插件的32位DLL代码文件(即包含其他typelib,XSD和XSL条目的DLL),没有源代码或调试信息,最初在C 中编码,并与Visual Studio编码,
  • 此DLL中导出函数/方法的名称和参数(Firefox插件的函数,可在JS代码中访问),
  • Visual Studio社区2013在Windows 7上运行,
  • 在C 开发方面的经验,但没有COM或Firefox,
  • 调试英特尔汇编代码的经验,
  • 不禁止拆卸DLL的代码许可,

我想这样做:将DLL加载到某些C 代码中,然后将CPU级别置于函数的代码中,以找出其确切的作用。

您能给我任何提示从哪里开始以及如何完成工作?我想DLL可能需要一些特定于Firefox的初始化,然后才能调用我想调试的功能。可以使用Firefox SDK完成,而没有源代码和DLL的调试信息?或者我可以成功地" naked"加载dll,找到 - 相当简单 - 函数(如何?)的入口点并调用它?

感谢您的任何提示。

如果没有PDB文件或源代码,则很难调试DLL文件,因为调试器加载从PDB文件中加载调试信息并使用它来定位符号或关联当前执行程序源代码的状态。Visual Studio使用PDB文件作为其主要文件格式,用于调试期间调试信息。如果没有这些文件,您将无法调试该库。

更新:

我们使用LoadLibrary()函数将DLL动态加载到一个项目,但是如果您想介入DLL文件,则确实需要PDB文件。一个简单的示例是,您可以与一个简单的自定义DLL库项目创建并将一个PDB文件放在同一文件夹中。我认为Visual Studio将自动搜索目录并加载它们,您可以在调试模块窗口中找到信息。

以下情况与您的问题不同,但它也分享了我们,如果一个项目/过程确实调用了dll文件,它将加载PDB文件:

winbase :: loadLibrary()load .pdbs?

最新更新