CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何替换系统DLL??

楼主ahzhuo(好好编程,天天向上)2001-05-23 09:37:00 在 VC/MFC / 基础类 提问

        替换正在使用中的DLL,据MSDN说,WIN   9X下可以使用WININIT.INI,WIN   NT下则使用  
  MoveFileEx()函数,但是我在WIN   2000下使用MoveFileEx()函数来替换wsock32.dll时  
  仍然替换不成功,该如何解决这个问题?希望各位不吝赐教,谢谢! 问题点数:20、回复次数:13Top

1 楼FamelStudio(Famel)回复于 2001-05-23 10:16:00 得分 0

Windows   2000有系统文件保护功能,它在硬盘上保留重要的系统文件的备份。当程序替换了某个系统文件后,Windows   2000会自动使用备份的文件来恢复。你可以在系统的日志中看到。另外Windows   2000有最新的Winsock   dll,没有必要替换。Top

2 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 10:28:00 得分 0

实际上,我是想替换DLL来拦截其中的API调用,不知是否有办法实现?Top

3 楼alphagx(alpha)回复于 2001-05-23 10:31:00 得分 0

非常关注!!!Top

4 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 10:33:00 得分 0

如果要在WIN   NT/2000下HOOK   API需要什么手段?请大虾介绍一下Top

5 楼noho(生了一个胖儿子)回复于 2001-05-23 10:33:00 得分 0

Start   Registry   Editor   (Regedt32.exe).    
   
   
  Locate   the   following   key   in   the   Windows   NT   registry:    
   
  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session   Manager    
   
   
  Create   a   new   value   using   the   following   information:    
   
  Value   name:   PendingFileRenameOperations   Data   type   :   REG_MULTI_SZ   Value   data:   \??\c:\temp\win32k.sys   !\??\c:\winnt\system32\win32k.sys    
   
  Note   that   the   value   data   is   typed   on   two   separate   lines.    
   
   
  Quit   Registry   Editor.    
   
   
  Restart   the   computer.  
  Top

6 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 10:37:00 得分 0

MoveFileEx()也可以做相同的事情,但是REBOOT后操作实际上没有实现,在问题下,  
  上述的注册过后,真正执行是在什么时候?也就是说,在系统启动到什么地方的时候  
  执行?当时确定是任何DLL都没有加载么?Top

7 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 10:46:00 得分 0

没有启动任何网络应用程序,为什么   WSOCK32.DLL   仍然是正在被系统使用当中,  
  它到底是在什么时候加载的呢?会不会在处理注册表中PendingFileRenameOperations  
  定义的操作之前呢?Top

8 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 10:55:00 得分 0

好痛苦哦!没有人能够帮助我.....555555Top

9 楼verybigbug(等待中)回复于 2001-05-23 11:02:00 得分 0

拦截API调用有很多种方法,为什么要用这种最不推荐的方法呢?  
  《核心编程》中写了最少8种。  
  Top

10 楼Kevin_qing()回复于 2001-05-23 11:02:00 得分 0

注意win2000是有dll   cache的,search一下,wsock2.dll可能不止一个  
  另外winsock的dll也不止一个。  
  有ws2_32.dll   winsock.dllTop

11 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 11:08:00 得分 0

《核心编程》是什么?一本书么?那些方法能适用于NT架构吗?我个人的感觉是,HOOK   API  
  要牵扯到修改其它进程的执行代码,还有许多特权方面的问题,NT限制很严格不知道实现起来  
  会不会太过于复杂?Top

12 楼ahzhuo(好好编程,天天向上)回复于 2001-05-23 11:22:00 得分 0

唉,问了一早上都没找到问题的答案,真失望......Top

13 楼verybigbug(等待中)回复于 2001-05-23 11:24:00 得分 20

《Windows核心编程》  
  修改特权有很多函数。--你首先有Admin的特权。  
        我想你在用监视自己的机器的API时有Admin权限应该不过分吧!  
        如果监视别人的机器,我是不赞成。  
   
  比如,一般访问Service就不可以,用下面的代码就可以啦。  
   
  dwAccess   =   PROCESS_ALL_ACCESS;  
  //   dwProcessId为希望监视的程序的ID  
  hProcess   =   OpenProcess(dwAccess,   FALSE,   dwProcessId);  
  if(!hProcess)  
  {  
      SECURITY_DESCRIPTOR sd;  
      EnableDebugPrivilege(TRUE);  
      hProcess   =   OpenProcess(dwAccess,   FALSE,   dwProcessId);  
      InitializeSecurityDescriptor(&sd,   SECURITY_DESCRIPTOR_REVISION);  
      SetKernelObjectSecurity(hProcess,   DACL_SECURITY_INFORMATION,&sd);  
      EnableDebugPrivilege(FALSE);  
  }  
   
   
  EnableDebugPrivilege(BOOL   fEnable)  
  {  
      HANDLE   hProcess;  
      HANDLE hToken;  
   
      hProcess   =   OpenProcess(PROCESS_ALL_ACCESS,   FALSE,   GetCurrentProcessId());  
      if(hProcess)  
      {  
          if(OpenProcessToken(hProcess,   TOKEN_ADJUST_PRIVILEGES,   &hToken))  
          {  
                TOKEN_PRIVILEGES   tp;  
                tp.PrivilegeCount   =   1;  
                LookupPrivilegeValue(NULL,   SE_DEBUG_NAME,   &tp.Privileges[0].Luid);  
                tp.Privileges[0].Attributes   =   fEnable   ?   SE_PRIVILEGE_ENABLED   :   0;  
                AdjustTokenPrivileges(hToken,   FALSE,   &tp,   sizeof(tp),   NULL,   NULL);  
                CloseHandle(hToken);  
          }  
        CloseHandle(hProcess);  
      }  
  }  
   
  Top

相关问题

  • 求助!如何替换DLL?
  • 我想替换一个系统的DLL,应该如何使用函数转换器,需要哪些工具?
  • 如何替换Win2000的系统文件?
  • SOS(如何替换系统文件)
  • SOS(如何替换系统文件)
  • 如何替换系统菜单?
  • 如何替换系统动态库?比如替换ntdll.dll
  • 如何替换win2000系统目录下的Notepad.exe?
  • 如何替换windows 2000下的系统文件wsock32.dll?100分!
  • 如何使用API或其他方法替换系统文件

关键词

  • win32
  • 系统
  • 函数
  • 监视
  • 文件
  • dll
  • nt
  • security
  • api
  • 替换

得分解答快速导航

  • 帖主:ahzhuo
  • verybigbug

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo