如题。

解决方案 »

  1.   

    就是用Depends工具看到的那个列表。
      

  2.   

    http://www.pudn.com/downloads40/sourcecode/windows/system/detail135813.html
      

  3.   

    你的项目->属性->配置属性->链接器->命令行
    那里包含部分dll文件和相应路径。
      

  4.   

    另外编译后,debug,在“输出”视图也会显示dll和他的路径
      

  5.   

    用Depends看么,觉得不爽,用代码遍历PE结构,找IAT也不反对
      

  6.   

    用Depends这个工具查看一下EXE文件,列表中的文件都是依赖的啊
      

  7.   

    你的问题需要解析PE格式文件.网上有很多讲PE文件格式知识的,但可能提供可靠代码的比较少.
    下面是我的博客的链接,里面的类就是解析PE文件的.
    如果该PE文件不在内存,你需要把PE文件用LoadLibrary加载进内存,然后构造KPEFile类的对象.
    http://hi.baidu.com/chendeping/blog/item/c8e87d178b8218034a90a773.html
    你把里面的这个函数略作修改,就可以得到该PE文件直接依赖的DLL,间接依赖的需要递归.
    PIMAGE_IMPORT_DESCRIPTOR KPEFile::GetImportDescriptor(
    LPCSTR pDllName)
    {
    // first IMAGE_IMPORT_DESCRIPTOR
    PIMAGE_IMPORT_DESCRIPTOR pImport = (PIMAGE_IMPORT_DESCRIPTOR) 
    GetDirectory(IMAGE_DIRECTORY_ENTRY_IMPORT);

    if ( pImport==NULL )
    return NULL; while ( pImport->FirstThunk )
    {
    if ( stricmp(pDllName, RVA2Ptr(pImport->Name))==0 )
    return pImport; // move to next imported module
    pImport ++;
    } return NULL;
    }
    这个函数本来就简单,你自己改吧.
      

  8.   

    放心,EXE也是照样可以LoadLibrary进内存的.不要害怕.呵呵.
      

  9.   

    就是这个啦
    http://www.pudn.com/downloads40/sourcecode/windows/system/detail135813.html
      

  10.   

    分析PE格式,读取导入表,里面就有EXE(DLL)导入的dll名称,不过没有记录路径,系统LoadLibrary时会在一些路径下查找dll,可以生成这些路径,然后判断对应路径dll是否存在来得到dll的路径。
      

  11.   

    当这个目标程序正在运行的时候倒是好办,像很多进程管理那样,枚举他用到的 dll,这个可行.
    要是他没运行,仅仅是个 PE 在磁盘上,俺没辄了....还有楼上各位兄弟说的什么 depends 之类,应该都只能对静态的管用,动态的 LoadLibrary 不好使
      

  12.   

    这个有很多这样的例子啊,很多VC的参考书上就有的。我至少知道两本书上有,WIN核心编程(是在一个远程线程注入中的一段)和一本VC编程技巧宝殿什么的。