DLL重定向处理】的更多相关文章

windows核心编程(第五版)的20.6节介绍了Dll重定向. 0x01  Dll重定向简介 产生Dll重定向原因: 应用程序 a.exe 依赖动态链接库 compoent.dll 1.0 版本.但是用户的另一个软件 b 在系统的系统目录安装了 component.dll 2.0 版本,这两个版本不兼容, 因此,Windows 在加载 component.dll 的时候,会直接加载系统目录中的 component.dll,这就造成了 a.exe 程序无法运行,如果这时用户需要同时使用两个软件,…
说明 目前正在做的项目批次功能涉及第三方插件,而第三方插件需依赖4.* 版本的Newtonsoft.Json.dll,由于现有功能已经使用6.*版本的Newtonsoft.Json.dll,故采用了dll共存的方法来适应项目需求. • 方案 1.首先对比下2个版本的dll文件对应publicKeyToken,可在VS命令行工具下查看,具体如下: Setting environment for using Microsoft Visual Studio 2010 x86 tools. d:\Pro…
<西游记>中真假美猴王让人着实难以区分,但是我们熟知了其中的细节也不难把他们剥去表象分别出来.对问题不太关心的可以直接调到文中关于.Net文件版本的介绍 问题 最近在编译AKKA.net 时出现了一个问题:Newtonsoft.Json.dll 冲突. C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1819,5): warning MSB3243: No way to resolv…
20.4 函数转发器 (1)函数转发器原理(下图是利用Dependency Walker打开Kernel32.dll得到) ①图中CloseThreadpool*等4个函数转发到NTDLL中相应的函数中去了,但我们调用CloseThreadpool*等函数时,exe会被动态地链接到Kernel32.dll.当执行exe时,加载程序会发现被转发的函数实际上在NTDLL.dll中,然后它会将NTDLL.dll模块一并载入. ②当我们调用CloseThreadpool*函数时,那么调用GetProcA…
DLL劫持技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中. DLL劫持原理 由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件.首先会尝试从当前程序所在的目录加载DLL,如果没找到,则在Windows系统目录中查找,最后是在环境变量中列出的各个目录下查找.利用这个特点,先伪造一个系统同名的DLL,提供同样的输出表,每个输出函数转向真正的系统…
DLL重定向 因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll, App2.exe使用MyDll2.0.dll, MyDll1.0 和 MyDll2.0是同一个DLL的两个版本,1.0为旧版本,2.0为新版本. 而如果MyDll2.0.dll的存放路径的优先次序比较靠前时,那么App1.exe就会去加载MyDll2.0.dll,这就可能引发 DLL地狱问题,因此DLL重定向可解决这个问题. 加载程序总是先检查应用程序目录,我们所要做的就是如下: ①在…
+-- 版本 --+-- 编辑日期 --+-- 作者 -------------+ | V1. | | yin_caoyuan@.com | +----------+--------------+---------------------+ 这篇文章是对 <Windows核心编程(第五版)> ,, 这三章的总结. 这篇文章共有 小节: . Dll 和 进程的地址空间: . 隐式载入时链接 和 显式运行时链接: . 构建 dll: . 构建 可执行模块: . 运行 可执行模块: . 入口点函数:…
一.写作初衷 在Windows下单个DLL可能存在多个不同的版本,若不特别指定DLL的绝对路径或使用其他手段指定,在应用程序加载DLL时可能会查找到错误的版本,进而引出各种莫名其妙的问题.本文主要考虑以下两个方面: a. 参考MSDN,给出Windows下DLL查找顺序 b. 简单使用ProcessMonitor来验证DLL查找顺序 二.DLL查找顺序 (本部分多数内容是参考MSDN上的Dynamic-Link Library Search Order一文,链接如下http://msdn.mic…
Photon基础开发框架 Photon (v4)的基本框架.开发框架主要Photon和游戏逻辑(C#)两个部分,如下图最新的Photon v4支持的4种底层协议,游戏开发逻辑Photon目前主要划分为Load Balancing 和MMO(大型多人同时在线游戏). 一.Photon服务端示例 1.服务端开发 新建解决方案TestPhotonServer并新建类库项目MyPhotonServer,类库添加Photon引用(可在photon安装目录的lib里找到) Photon.SocketServ…
1..Net for Oracle 常见数据库驱动 1.1.微软提供的驱动 1.2.甲骨文提供的驱动 1.3.其它厂商提供的驱动 2.ODP.NET 常见问题分析 2.1.参数化问题 2.2.方法调用问题 2.3.取不到存储过程的输出参数值 3.总结 网上有大量诸如 C#/.Net 连接 Oracle 的几种方式之类的文章,无非也就是介绍几种驱动,而且具体内容几乎雷同.曾经我只是想找一个适合项目的访问 Oracle 的方法,结果迷失在浩瀚如烟的相似帖子中望洋兴叹.随着时间的推移,我逐渐理清了这里…
Shim是微软系统中一个小型函数库,用于透明地拦截API调用,修改传递的参数.自身处理操作.或把操作重定向到其他地方.Shim主要用于解决遗留应用程序在新版Windows系统上的兼容性问题,但Shim也可用于其他方面.例如上周微软紧急推出针对“微软Office Powerpoint 0day漏洞(CVE-2014-6352)”的Fix It,其中就采用了Shim技术,用于修复存在安全缺陷的函数. 一.什么是Shim Shim是微软极少使用的四字母单词之一,也不是某种形式的缩写.它是英语单词Shi…
曾经,调试时跟进HeapAlloc,结果发现直接进入到ntdll的RtlAllocateHeap中,感到很有趣,就使用Dependency Walker查看kernel32.dll的导出函数,结果发现HeapAlloc的地址直接显示的就是NTDLL.RtlAllocateHeap.于是反汇编查看kernel32.dll文件,发现本以为是汇编代码的HeapAlloc的函数体就是字符串NTDLL.RtlAllocateHeap. 想想以前也曾经自己实现过GetProcAddress,就是直接从导出表…
查看dll导出函数,一般使用Viewdll等第三方工具. VS开发环境中,可以查看32位和64位的dll.具体使用方法如下: 1. 进入VS开发环境,然后Tools -> Visual studio 2010 Command Prompt 2. cd到d:\下 3. 输入命令d:\dumpbin /exports a.dll回车即可看到a.dll的所有导出函数 如果要重定向输出至b.txt文本文件,则命令格式如下:d:\dumpbin /exports a.dll /out:b.txt dll_…
以前查看dll导出函数,一般使用Viewdll等第三方工具.但由于Viewdll采用dephi编写,因此仅能查看32位的dll.其实微软已经帮我们提供一个查看dll导出函数的命令,嵌在VS开发环境中,可以查看32位和64位的dll.具体使用方法如下:(例如查看d:\a.dll的导出函数) 1. 进入VS开发环境,然后Tools -> Visual studio 2010 Command Prompt 2. cd到d:\下 3. 输入命令d:\dumpbin /exports a.dll回车即可看…
程序中要调用外部程序cmd.exe执行一些命令行,并取得屏幕输出,使用了Process类,基本代码如下: Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectSt…
调用 Visual C++ DLL 给 C++Builder 程序员提出了一些独特的挑战.在我们试图解决 Visual C++ 生成的 DLL 之前,回顾一下如何调用一个 C++Builder 创建的 DLL 可能会有所帮助.调用 C++Builder 创建的 DLL 要比 Visual C++ 的少了许多障碍. 为了在你的 C++Builder 工程里调用 DLL,你需要三种元素:DLL 本身,带有函数原型的头文件,和引入库(你可以在运行时载入 DLL,而不是使用引入库,但为了简单我们按引入库…
先来点与标题不相关的: CLR支持两种程序集:弱命名程序集和强命名程序集. 两者的区别在于强命名程序集使用发布者的公钥和私钥进行签名.由于程序集被唯一性地标识,所以当应用程序绑定到强命名程序集时,CLR可以应用一些已知安全的策略. 程序集可以采用两种方式部署:私有或者全局.弱命名程序集只能以私有方式部署. 在<CLR via C#>的第三章主要讲了私有部署和全局部署的具体内容,以及弱命名程序集和强命名程序集. 但是老实说一般情况下确实用不到这些东西,所以这里就不写了. 还有一个就是对CLR如何…
欢迎转载,转载请注明出处:http://www.cnblogs.com/uAreKongqi/p/6012353.html 0x00.前言 提到Dll的注入,立马能够想到的方法就有很多,比如利用远程线程.Apc等等,这里我对Ring3层的Dll注入学习做一个总结吧. 我把注入的方法分成六类,分别是:1.创建新线程.2.设置线程上下背景文,修改寄存器.3.插入Apc队列.4.修改注册表.5.挂钩窗口消息.6.远程手动实现LoadLibrary. 那么下面就开始学习之旅吧! 0x01.预备工作 在涉…
首先:DLL技术是针对C的技术,虽然也支持C++,但是对C++的支持不够好.C++对应的是COM技术. 建议首先看一下Programming  Windows的21章,虽然没有讲MFC如何制作DLL,但是讲了一些很重要的基本概念. 教程地址: http://blog.csdn.net/chenqiang35/article/details/3069382 http://oulehui.blog.163.com/blog/static/79614698201152423656383/ http:/…
原文:标准输入输出重定向(Visual C++) 引言 本人偶得在 Visual C++ 中进行输入输出重定向的办法,比通常的做法“freopen”更加的灵活和方便,特在此共享.目前,代码正在不断地摸索和完善中,先把“输出”(stdout)部分提供给大家. 阅读本文需要有一定的 Visual C++ 开发经验.本文所介绍的内容,只适用于一些特殊需求,不知道“输出重定向”有什么用的朋友,不必感到迷茫. 1. 简介 在 Visual C++ 中,有好几种用法与标准输入输出有关: 系列1:scanf,…
目录 第1章说明    2 1.1 查找顺序    2 1.1.1 检查DllCharacteristics字段    3 1.1.2 读取manifset资源    3 1.1.3 读取manifset文件    4 1.1.4 载入    5 1.1.5 私有程序集    5 1.1.6 常规DLL的查找顺序    7 1.2 禁用隔离    7 1.2.1 修改DllCharacteristics字段    7 1.2.2 修改manifset    9 1.2.3 修改msvcr*.dl…
[转]关于lib,dll,.a,.so,静态库和动态库的解释说明 目录 1 什么叫程序库 2 什么是lib,什么是dll,什么是.a,什么是so,什么是静态库,什么是动态库 3 补充说明 4 作者 什么叫程序库 所谓程序库,一般是软件作者为了发布方便.替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接的二进制可重定位目标码文件.通俗一点说,所谓一个库,就是一个文件,这个文件可以在编译时由编译器直接链接到可执行程序中,也可以在运行时由操作系统的r…
大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访问量很大的网站,利用静态文件可提高服务器的运行稳定和速度,坏处就是生成列表的时候会因为增加一条记录从而需要所有相关的列表进行重构,当然不排除有的公司已经攻克的这个问题,但对于大众程序员来说,他依旧是个问题,而且生成的化对于中小型网站也不一定会比动态的号,因为管理比较麻烦. 结构以上事实,然后伪静态技…
.Net dll多个同名的程序集版本冲突共存与通过基本代码或探测定位程序集方案 在使用调用程序集的引用中的信息和配置文件中的信息确定了正确的程序集版本之后,并且在公共语言运行时在全局程序集缓存中进行检查(仅检查具有强名称的程序集)之后,公共语言运行时就会尝试查找该程序集. 定位程序集的过程包含以下步骤: 如果在应用程序配置文件中找到 <codeBase> 元素,则运行时会检查指定的位置. 如果找到匹配的程序集,则会使用该程序集,并且不会进行探测. 如果在其中没有找到程序集,则绑定请求失败. 然…
  网站更换域名,把旧域名用301指到新域名来. 从iis中设置url永久转向就可以,看上去很容易,用了一会儿才发现,参数都没有带上. 从微软网站上找到如下说明,果然好使: 重定向参考 (IIS 6.0) 重定向客户端请求是确保用户得到正确页面的一种方法,它适用于站点正在建设之中或已改变标识的情况.您可以将客户端请求重定向到同一 Web 服务器上的某个目录,或者重定向到另一个 URL. 配置 URL 和通配符重定向 可以采用编程方式配置重定向到 URL 以及通配符重定向.使用重定向变量和标志可以…
DLL搜索路径和DLL劫持 环境:XP SP3 VS2005 作者:magictong 为什么要把DLL搜索路径(DLL ORDER)和DLL劫持(DLL Hajack)拿到一起讲呢?呵呵,其实没啥深意,仅仅是二者有因果关系而已.可以讲正是因为Windows系统下面DLL的搜索路径存在的漏洞才有了后来的一段时间的DLL劫持大肆流行. 最近(其实不是最近,哈,是以前分析过,断断续续的……)简单分析了一个DLL劫持下载者的行为,感觉有必要写点东西说明一下.其实DLL劫持是比较好预防的,从编程规范上我…
$bcb/bin目录中有个implib.exe 把你的vc.dll和implib.exe复制到c盘根目录下 运行cmd 进入c盘根目录执行 c:\implib -a cb.lib vc.dll 会生成cb.lib,将生成出的文件添加进入工程,然后再将对应的.h添加进入工程,将dll复制到项目路径下即可. -------------------------------------------------------------------------------------------------…
前言 因为一次偶然的机会,需要访问系统目录“C:/Windows/System32“文件夹下的内容,使用的测试机器上预装了win7 64系统.在程序运行中竟然发生了该文件路径不存在的问题!!通过查看网上相关的资料,了解到64位系统下,System32(同时也包括Program Files)这两个文件夹被动态地重定向了.为了可以直观的反映这个问题,这里将编写一个小的测试程序进行验证. 实例验证 首先随机选择一个文件,并将其拷贝到系统目录的System32文件夹下.本文选择QQ启动程序进行验证(主要…
译者序: 第一次读这篇文章是在 2001 年 10 月,帮我解决了一点小问题.本来不好意思翻译,因为英语水平实在太差.最近发现不少网友在问在 C++Builder 的工程里调用 Visual C++ DLL 的问题,也许是用 C++Builder 的人比以前多了吧.于是把心一横,不就是板儿砖嘛?“抛砖引玉”,希望它能给你帮点小忙,也欢迎指出翻译中的错误. shadowstar 2003-6-3 shadowstar's home: http://shadowstar.126.com/ sourc…
写一个Windows上的守护进程(5)文件系统重定向 在Windows上经常操作文件或注册表的同学可能知道,有"文件系统/注册表重定向"这么一回事.大致来说就是32位程序在64位的Windows上运行时,操作系统会把对System32文件夹的访问重定向到SysWow64下,把对HKEY_LOCAL_MACHINE\SOFTWARE的访问重定向到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下.当然不止这些路径和注册表.详情请查看MSDN:https://…