精华内容
下载资源
问答
  • DLLloader (dll加载器)

    2018-07-07 15:59:54
    DLLloader(dll加载器) 免费 强大 破解 非常好用 绿色 DLLloader是一个给电脑专业人员使用的dll文件调试工具,它包括了dll加载器,dll脱壳工具,里面内置3中加载器,让你更好的调试dll文件。 DLLloader DLLloader功能...
  • DLL加载器,绝对好用,关闭DLL自动卸载。
  • DLLloader是一个给电脑专业人员使用的dll文件调试工具,它包括了dll加载器,dll脱壳工具,里面内置3中加载器,让你更好的调试dll文件。 DLLloader DLLloader功能说明:  1、DLL_Loader DLL加载器,用来DLL文件脱壳...
  • 易语言内存DLL加载器易语言模块源码.rar 易语言内存DLL加载器易语言模块源码.rar 易语言内存DLL加载器易语言模块源码.rar 易语言内存DLL加载器易语言模块源码.rar 易语言内存DLL加载器易语言模块源码.rar ...
  • 给大家介绍了DLL加载设置相对路径的方法,非常不错,具有一定的参考借鉴加载,需要的朋友参考下吧
  • DLL加载器(x86和x64)

    2020-11-13 20:59:16
    DLL加载器,支持X86和X64加载,支持内存加载,测试程序专用测试程序专用测试程序专用DLL加载器,支持X86和X64加载,支持内存加载,测试程序专用测试程序专用测试程序专用
  • 易语言dll加载接口模块源码例程程序调用API函数实现取加载的DLL文件的接口。本源码是学习加载DLL文件取接口的很好的例程。 易语言学习网
  • dll加载拦截sleep 按button3 加载dll 会弹出新程序 将dll注入
  • MFC下的DLL加载、文件读写、波形显示等功能合集。 包括DLL显式、隐式加载方式,波形绘制及显示,文件读写功能。 其中,还有通过加载Matlab生成的DLL完成运算的例子,考虑到有些用户没装matlab,可能会导致无法正常...
  • 同事测试时发现界面有个模块始终无法显示,使用Process Explorer查看发现对应dll没有加载,详细叙述了定位问题的过程和方法,供借鉴。

    今天同事测试时发现界面有个模块始终无法显示,使用Process Explorer查看发现对应dll没有加载。然后开始排查问题:

    1.首先,看exe有没有加载这个dll的行为

    假设A.exe调用B.dll

    windbg打开exe,设置断点

    sxe ld B.dll

    运行,发现成功断下来,继续g完成,查看依旧没有加载B.dll

    说明

    A.exe中尝试加载了B.dll,但是B.dll因为某种原因加载失败


    2.然后,开始看B.dll是因为什么加载失败

    最简单的就是我们去看下LoadLibrary执行结果,

    如下设置断点

    kernel32!LoadLibraryExW  (win 10上bu kernelbase!LoadLibraryExW)

    怎么查看当前加载的模块名称呢,我们知道这个名称是LoadLibrary的第一个参数,因此可如下获取当前加载的模块名

    du poi(@esp+4)

    然后就是一个断点慢慢走,直到模块名为B.dll  (为了加快速度,也可以先Load一遍,大概找下规律,先用sxe ld断到B.dll前几个dll,然后再设置LoadLibrary断点)


    然后依次执行如下命令

    p单独调试进入函数 (F11 or F8)

    gu执行完函数 (Shift+F11)

    !gle即可获得函数GetLastError值

    此时lasterror=126 

    errorlook查看 126 => "找不到指定的模块。"


    但实际上查看发现B.dll是存在的,此时可以猜想

    B.dll静态依赖的某个dll不存在了


    3.使用depends.exe工具查看B.dll

    发现如下


    很明显,程序静态导入sfc.dll的SfcIsFileProtected,sfc.dll不存在时会出现无法加载B.dll的情况


    至此,问题定位。

     sfc.dll缺少在很多精简Ghost系统上存在,依赖这个文件可以检测一个文件是否系统文件。为了解决这个静态依赖,可以考虑动态Loadlibrary sfc.dll导出函数来检测,sfc.dll不存在时可以考虑按照System32等系统目录做简单过滤判断。


    原创,转载请注明来自http://blog.csdn.net/wenzhou1219

    展开全文
  • dll 加载与卸载的顺序研究

    千次阅读 2018-03-16 10:44:15
    之前写过一篇DLL 加载卸载的文章,不太好,重写一下,更深入一点。两个组或者两个公司独立的开发可能用来组成同一个产品的组件,但是他们必须独立的构建、测试和提交他们的工作。组件粒度很难是正确的且与怎么对组件...

    之前写过一篇DLL 加载卸载的文章,不太好,重写一下,更深入一点。

    两个组或者两个公司独立的开发可能用来组成同一个产品的组件,但是他们必须独立的构建、测试和提交他们的工作。组件粒度很难是正确的且与怎么对组件是最好的这样的问题无关。取而代之的是,一个组件是怎样才能对公司最好(团队不喜欢使用多个dll,且他们想自主的写一个单独的DLL,以便他们的测试人员可以对测试组件所意为的工作量感到满意)以及怎样才对一个高性能的团队最好的集合(一个功能一个DLL将使系统的性能下降不少)。

    当一个加载器发现这种现象的时候,它会怎么做?

    谁更深,谁被更早的添加到列表中??

    装了火绒就是上面的效果,因为火绒会注入dtrampo.dll 到进程中。

    不装火绒的时候就是这种状态。

    为什么DLL 以错误的顺序卸载?

    当一个程序开始运行,或者一个DLL 被加载,加载器为DLL 或者程序建立一个依赖树。之后加载器找到一个正确的加载顺序,使得,直到一个DLL 的所有的依赖的DLL 都被加载了之后该DLL才会被初始化。如果你有一个循环依赖,下面将思考这个问题??如果你在DLL_PROCESS_ATTACH 通知中调用LoadLibrary,将使得这个情形更加混乱,而且,会导致死锁。

    首先:循环加载:
    DemoProgram:

    #include <stdio.h>
    #pragma comment(lib,"helloworld.lib")
    extern "C" __declspec(dllimport) void hello();
    int main()
    {
           printf("DemoProgram world\r\n");
           hello();
           getchar();
           return 0;
    }
    

    helloworld.dll
    // dllmain.cpp : 定义 DLL 应用程序的入口点。

    #include "stdafx.h"
    #include <stdio.h>
    #include <windows.h>
    extern "C" __declspec(dllexport) void hello()
    {
           printf("Hello World\r\n");
           return;
    }
    #pragma comment(lib,"ref_hello.lib")
    extern "C" __declspec(dllimport) void ref_hello();
    BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
    {
           switch (fdwReason)
           {
           case DLL_PROCESS_ATTACH:
                  printf("HelloWorld Module\r\n");
                  // hello();
                  ref_hello();
                  break;
           case DLL_PROCESS_DETACH:
                  break;
           case DLL_THREAD_ATTACH:
                  break;
           case DLL_THREAD_DETACH:
                  break;
           }
           return TRUE;
    }
    

    ref_hello.dll:
    // dllmain.cpp : 定义 DLL 应用程序的入口点。

    #include "stdafx.h"
    #include <stdio.h>
    #pragma comment(lib,"helloworld.lib")
    extern "C" __declspec(dllimport) void hello();
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
                         )
    {
        switch (ul_reason_for_call)
        {
        case DLL_PROCESS_ATTACH:
           {
                  printf("ref_hello Module\r\n");
                  hello();
                  break;
           }
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
        }
        return TRUE;
    }
    extern "C" __declspec(dllexport) void ref_hello()
    {
           printf("ref_hello \r\n");
    }

    输出为:
    ref_hello Module
    Hello World
    HelloWorld Module
    ref_hello
    DemoProgram world
    Hello World

    我们改变DemoProgram ,修改对helloworld 模块的引用为:对ref_hello 模块的引用:

    #include <stdio.h>
    // #pragma comment(lib,"helloworld.lib")
    // extern "C" __declspec(dllimport) void hello();
    #pragma comment(lib,"ref_hello.lib")
    extern "C" __declspec(dllimport) void ref_hello();
    int main()
    {
           printf("DemoProgram world\r\n");
           ref_hello();
           getchar();
           return 0;
    }
    

    输出如下:
    HelloWorld Module
    ref_hello
    ref_hello Module
    Hello World
    DemoProgram world
    ref_hello

    我们再次改变DemoProgram,使其同时引用两个模块:

    #include <stdio.h>
    #pragma comment(lib,"helloworld.lib")
    extern "C" __declspec(dllimport) void hello();
    #pragma comment(lib,"ref_hello.lib")
    extern "C" __declspec(dllimport) void ref_hello();
    int main()
    {
           printf("DemoProgram world\r\n");
           ref_hello();
           hello();
           getchar();
           return 0;
    }
    

    输出为:

    ref_hello Module
    Hello World
    HelloWorld Module
    ref_hello
    DemoProgram world
    ref_hello
    Hello World

    修改上面对于两个模块的引用的顺序:

    #include <stdio.h>
    #pragma comment(lib,"ref_hello.lib")
    extern "C" __declspec(dllimport) void ref_hello();
    #pragma comment(lib,"helloworld.lib")
    extern "C" __declspec(dllimport) void hello();
    int main()
    {
           printf("DemoProgram world\r\n");
           ref_hello();
           hello();
           getchar();
           return 0;
    }

    输出如下:
    HelloWorld Module
    ref_hello
    ref_hello Module
    Hello World
    DemoProgram world
    Hello World
    ref_hello

    似乎发现了什么。。。。。。。。。。。。。。。。。。
    其PE 文件中的DLL 的加载顺序同上,

    接下来在项目属性中修改两个模块的顺序如下:

    这里写图片描述

    ref_hello Module
    Hello World
    HelloWorld Module
    ref_hello
    DemoProgram world
    Hello World
    ref_hello

    再次修改顺序如下:
    这里写图片描述
    输出结果为:
    HelloWorld Module
    ref_hello
    ref_hello Module
    Hello World
    DemoProgram world
    Hello World
    ref_hello

    我们似乎又发现了什么。。。。。。。。。。。。。。。。。。。。。。。。。。
    使用CFF Explorer_CN.exe 查看两种EXE 其导入表如下:
    这里写图片描述
    这里写图片描述

    再对比EXE 的输出我们可以发现导入顺序的玄机。

    这个没有考虑到一个问题是:如果A,B 循环依赖,且在DLL_PROCESS_DETACH 消息中依然引用对方的代码,将可能导致程序崩溃,因为引用了已经卸载的DLL 的代码。
    下一篇:

    1. 如何在不修改PE 文件的情况下修改其导入的模块的加载顺序??????
    
    2. dllmain 中调用LoadLibrary
    
    展开全文
  • 完美解决PL/SQL连接数据库提示oci.dll加载失败的问题,安装包
  • SetDllDirectory设定DLL加载路径

    万次阅读 2016-11-30 21:25:47
    今天把项目交给测试的时候发现动态加载dll的时候加载失败了,很疑惑,自己的例子程序可以好好的运行。失败的原因估计是我调用的DLL无法成功调用它所需要的DLL。Created with Raphaël 2.1.0MyDLLMyDLLDLL ADLL ADLL ...

    今天把项目交给测试的时候发现动态加载dll的时候加载失败了,很疑惑,自己的例子程序可以好好的运行。失败的原因估计是我调用的DLL无法成功调用它所需要的DLL。

    Created with Raphaël 2.1.0 MyDLL MyDLL DLL A DLL A DLL B DLL B DLL ...... DLL ......

    然后推测估计是DLL A加载DLL B等其他DLL的时候使用的相对路径,当我从C:\\加载D:\\A\\中的DLL的时候,如果使用相对路径,则会在C:\\中找,这肯定找不到。我原来使用SetCurrentDirectory 改变当前环境,在自己的测试程序上能加载上,但是不知道为什么其他人的程序就加载的时候会失败。
    后来找到一个简单的函数SetDllDirectory 可以直接增加一个当前应用程序搜索dll的路径。
    SetCurrentDirectory 都不需要了。╮(╯▽╰)╭

    TCHAR path[MAX_PATH] = {"D:\\A\\"};
    SetDllDirectory(path);
    展开全文
  • win10 Initpki.dll加载失败 在解决0x800040005错误时,前三个代码成功,最后一个代码加载失败即: 模块”lnitpki.dll“加载失败。 请确保二进制储存在指定路径中,或者调试它已检查该二进制或相关的.DLL文件是否...

    在安装完了新系统后(win10),我需要把VB滚轮重新安装一遍,这过程中出现了一些问题记录在这里。

     

    win10 Initpki.dll加载失败

     在解决0x800040005错误时,前三个代码成功,最后一个代码加载失败即:

    模块”lnitpki.dll“加载失败。

    请确保二进制储存在指定路径中,或者调试它已检查该二进制或相关的.DLL文件是否有问题。

    找不到指定的模块。

     

    解决问题的链接:链接

    按步骤操作成功修复了Initpki.dll   同时学到一个快捷键:开始下输入cmd,按CTRL+SHIFT+ENTER启用管理员身份打开。

    随后按照正常步骤:

    1.下载“vb6mousewheel.exe”,压缩后把"VB6IDEMouseWheelAddin.dll"放在对应系统下:

    (1)Windows的32位:C:\Windows\System

    (2)Windows的64位:C:\Windows\SysWOW64

    2.以管理员运行CMD;

    输入 "regsvr32+空格+路径+VB6IDEMouseWheelAddin.dll"

    如:"regsvr32 C:\Windows\SysWOW64\VB6IDEMouseWheelAddin.dll"

    3.提示成功后在VB中外接程序管理器中选择“MouseWheel Fix”,并勾选加载行为中的 在启动中加载、加载

     

    展开全文
  • 在2个星期前,用vs2013 +oracle11g开发一个cs的工具时,遇到这么个错误。简述一下项目情况: vs2013 framework4.5 +oracle 11g +EF5 ...大概就这么个情况,就是说这个dll加载错误。 因为项目oracle的连接用的是Or
  • win10 电脑中模块initpki.dll加载失败提示0x80004005错误代码如何解决 有不少win10系统用户反映说碰到这样一个故障,就是模块initpki.dll加载失败,并提示0x80004005错误代码,该怎么解决呢,接下来就随系统城小编一...
  • dll加载失败

    千次阅读 2012-05-23 21:49:17
    DLL中的函数加载失败多数是由于定义的输出函数名有问题,我遇到过这样的问题。 你查一下DLL的源码,采用__stdcall输出 你可以编写.def文件,定义输出函数。 将DLL编译链接,生成DLL文件,双击打开,查看其中的...
  • C++ 远程Dll加载,卸载示例代码

    千次阅读 2013-10-27 20:15:48
    //Dll加载 BOOL RemoteLoadLibrary( DWORD dwProcessID, char *lpszDll) { //打开目标进程 HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRIT
  • DLL加载顺序

    千次阅读 2013-09-25 09:27:26
    加载DLL时查找顺序: 1、可执行模块目录。也就是debug.exe目录。 2、当前文档目录。即工程目录。 3、system32。 4、system。 5、系统path环境变量。
  • dll加载卸载工具源码

    千次下载 2012-02-18 20:15:35
    远程注入方式实现LoadLibrary,...附带遍历进程和模块dll功能。svchost等的系统进程不能遍历,没做处理。 用了破解的皮肤组件,360之类的软件可能会唧唧歪歪,不喜欢的可以自行修改代码和删除相关皮肤文件的调用。
  • 清理插件后,每当打开IE浏览器或者“我的电脑”“我的文档”就会提示“RUNDLL 加载时出错 找不到指定的模块” 。关掉它之后,一切运行都正常。该看什么网页都能看到。不影响使用。但是每次都提示,实在是让我...
  • dll加载失败,返回126错误

    千次阅读 2008-11-13 15:52:00
    调试了一下午,网上也没找到怎么回事,后来发现dll有个导出函数比较异常,经过仔细排除,原来dll定义了一个_AFXEXT宏,给自己增加了一个全局变量定义,加载dll时这个全局变量初始化失败,导致dll加载不了,返回126...
  • 怎样将自己的DLL加载到Explorer.exe

    千次阅读 2013-08-28 16:18:03
    我们知道将动态连接库注入到其他进程中有...第二Hook DLL加载的时机问题,只有在进程发出User32调用的时候, Hook DLL才有可能被加载。也就是说假设进程正在进行复杂的数值计算而没有时间进行消息调用的时候,Hook DLL
  • VS2013 系统 win10 使用ADO链接SqlServer2008 查询可以 写插入语句并执行的时候报错 + this 0x0bde0fe8 <无可用信息,未为 msado15.dll 加载任何符号> Recordset15 * 请问是什么原因?
  • [下面的框架可能不正确和/或缺失,没有为 ntdll.dll 加载符号] 未知 在写图代码时遇见这个错误,仔细查找了,原来是 m_pMatrix = new int[m_iCapacity]; //初始化内部数据 将所有成员设置为0 memset(m_pMatrix, 0, ...
  • dll加载失败问题解决

    千次阅读 2016-11-17 08:52:06
    问题:将二进制差分工具放如system32中无法加载。如图 解决方法:用软件DLL查看器查找所要注册dll文件的来源文件有哪些 发现系统缺失MSVCR120.dll,补充后问题得以解决。
  • DLL加载 DLL不能独立运行,他只有被*.exe加载才会被运行。 多个进程可以同时调用一个DLL。 数据段与代码段   在DLL文件里,至少分为两个段(Section): Code Section:代码段,存储指令(函数体)   Code...
  • 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件中 #pragma comment(lib, "a.lib") 然后你的对话框.cpp中包含这个头文件就...
  • 64位windows操作系统安装pycharm后,双击图标打不开,提示jvm.dll加载失败解决方法 网上的解决方法有两种,一种是安装microsoft visual c++ 2010 redistributable,但是我的电脑上有这个软件,所以这个方法对我来说...
  • dll加载问题的解决方法

    千次阅读 2017-03-27 21:04:29
    在使用LoadLibrary() 和LoadLibraryEx()加载dll文件的时候,会产生下面的错误: this application has failed to start because XXXXX.dll was not found. Re-installing the application may fix this problem. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,918
精华内容 71,167
关键字:

dll加载