[Windows编程] 使用.local 重定向DLL 加载路径

简介:
在调试DLL或COM程序的时候, DLL文件可能会被其他程序占用,而无法被替换。 在WinXP,Vista 上, 可以通过创建.local 文件夹来重定向DLL 的加载路径
步骤(假设你的EXE为MyApp.exe, 要调试的DLL为 MyModule.dll):
1) 在 MyApp.exe 的目录下创建一个 MyApp.exe.local
2) 把你希望加载的 MyModule.dll 复制到 MyApp.exe.local 目录下
3) 运行 MyApp.exe
原来的 E:\Test\MyApp.exe 加载的DLL
ModLoad: 00400000 00432000   MyApp.exe
ModLoad: 7c800000 7c8f4000   C:\windows\system32\kernel32.dll
ModLoad: 77c10000 77c68000   C:\windows\system32\msvcrt.dll
ModLoad: 00440000 00c80000   C:\windows\system32\MyModule.dll
ModLoad: 77dd0000 77e6b000   C:\windows\system32\ADVAPI32.dll
创建.local 文件夹之后,E:\Test\MyApp.exe 加载的DLL
ModLoad: 00400000 00432000   MyApp.exe
ModLoad: 7c800000 7c8f4000   C:\windows\system32\kernel32.dll
ModLoad: 77c10000 77c68000   C:\windows\system32\msvcrt.dll
ModLoad: 00440000 00c80000   E:\Test\MyApp.exe.Local\MyModule.dll
ModLoad: 77dd0000 77e6b000   C:\windows\system32\ADVAPI32.dll
注意: 要打开.local这个功能,需要在注册表设置DevOverrideEnable值,并且重启机器

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]
"DevOverrideEnable"=dword:00000001
 
【小窍门】 可以在命令行输入以下命令来设置注册表:
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /v DevOverrideEnable /t REG_DWORD /d 1 /f
 
 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273929,如需转载请自行联系原作者


相关文章
|
6天前
|
JavaScript Windows Python
Windows DOS进入指定盘符(磁盘路径)
Windows DOS进入指定盘符(磁盘路径)
22 1
|
1月前
|
C# 数据安全/隐私保护 开发者
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?
|
1月前
|
网络协议 Linux C语言
005.在Windows下编程让效率起飞
windows开发Linux方式: 先用编辑器编写源代码 然后进入Linux 系统,使用gcc编译器(后面会讲),对源代码进行编译运行。 熟练后推荐使用VS2019 开发Linux C++ 程序 将自己的Ip地址设为静态IP
27 1
|
1月前
|
存储 Java C语言
Windows 下 JNI 调用动态链接库 dll
Windows 下 JNI 调用动态链接库 dll
33 0
|
1月前
|
存储 Java C++
Windows 下 JNA 调用动态链接库 dll
Windows 下 JNA 调用动态链接库 dll
23 0
|
2月前
|
人工智能 机器人 C#
Windows编程课设(C#)——基于WPF和.net的即时通讯系统(仿微信)
一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。
|
2月前
|
Windows
5.1 Windows驱动开发:判断驱动加载状态
在驱动开发中我们有时需要得到驱动自身是否被加载成功的状态,这个功能看似没啥用实际上在某些特殊场景中还是需要的,如下代码实现了判断当前驱动是否加载成功,如果加载成功, 则输出该驱动的详细路径信息。该功能实现的核心函数是`NtQuerySystemInformation`这是一个微软未公开的函数,也没有文档化,不过我们仍然可以通过动态指针的方式调用到它,该函数可以查询到很多系统信息状态,首先需要定义一个指针。
5.1 Windows驱动开发:判断驱动加载状态
|
2月前
|
网络协议 安全 API
9.9 Windows驱动开发:内核远程线程实现DLL注入
在笔者上一篇文章`《内核RIP劫持实现DLL注入》`介绍了通过劫持RIP指针控制程序执行流实现插入DLL的目的,本章将继续探索全新的注入方式,通过`NtCreateThreadEx`这个内核函数实现注入DLL的目的,需要注意的是该函数在微软系统中未被导出使用时需要首先得到该函数的入口地址,`NtCreateThreadEx`函数最终会调用`ZwCreateThread`,本章在寻找函数的方式上有所不同,前一章通过内存定位的方法得到所需地址,本章则是通过解析导出表实现。
9.9 Windows驱动开发:内核远程线程实现DLL注入
|
3月前
|
开发者 Windows
什么是 Windows 操作系统 DLL 文件的 Side-by-Side Assemblies 技术
什么是 Windows 操作系统 DLL 文件的 Side-by-Side Assemblies 技术
31 0
|
3月前
|
API UED Windows
什么是 Windows 操作系统的 DLL 文件
什么是 Windows 操作系统的 DLL 文件
57 0

相关产品

  • 云迁移中心