利用NtUnmapViewOfSection强制卸载模块

原创 2007年09月14日 10:19:00
 确实可以卸载指定进程指定位置的模块,但有几个问题:
[1]  PEB的模块列表中还存在该模块的记录,大部分模块枚举函数都是枚举这个列表
[2]  可能会出现访问异常

看来RING3下是不可能做到强制卸载模块的完美实现,要进ring0才行。下面是测试代码
typedef ULONG (WINAPI *PFNNtUnmapViewOfSection)( IN HANDLE ProcessHandle,IN PVOID BaseAddress );

BOOL UnmapViewOfModule ( DWORD dwProcessId, LPVOID lpBaseAddr )
...{
    HMODULE hModule 
= GetModuleHandle ( L"ntdll.dll" ) ;
    
if ( hModule == NULL )
        hModule 
= LoadLibrary ( L"ntdll.dll" ) ;

    PFNNtUnmapViewOfSection pfnNtUnmapViewOfSection 
= (PFNNtUnmapViewOfSection)GetProcAddress ( hModule, "NtUnmapViewOfSection" ) ;
    
    HANDLE hProcess 
= OpenProcess ( PROCESS_ALL_ACCESS, TRUE, dwProcessId ) ;
    ULONG    ret 
= pfnNtUnmapViewOfSection ( hProcess, lpBaseAddr ) ;
    CloseHandle ( hProcess ) ;
    
return ret ? false : true ;
}

相关文章推荐

MmCreateSection/MmMapViewOfSection个人注释及理解(二)

MmCreateSection/MmMapViewOfSection个人注释及理解(一)中提到内存映射的第一步创建Section对象建立Segment与文件的关系,彼时尚未建立虚拟内存因此不能被访问。...

linux3.x 内核如何强制卸载模块?

一、问题现象: 在insmod时调用的init函数代码执行过程中出现oops,导致rmmod卸载失败,此时不得不重启目标板? No! 下面是《精通linux设备驱动程序开发》中模拟鼠...

linux3.x 内核如何强制卸载模块?

一、问题现象: 由于insmod函数执行中错误,导致rmmod卸载失败而不得不重启? #include #include #include #include #include #includ...

强制卸载目标进程模块

代码来源于网络,卸载模块后通过查询PEB得到进程信息的程序没有得到更新,(如:Windows优化大师和360的进程查看),可以通过冰刃查看。 注:强制卸载可能导致目标进程崩溃。 哈哈,又有了种结束...

Linux强制卸载内核模块(由于驱动异常导致rmmod不能卸载)

CSDN GitHub Linux强制卸载内核模块(由于驱动异常导致rmmod不能卸载) LDD-LinuxDeviceDrivers/study/driver/force_rmmod 本...
  • gatieme
  • gatieme
  • 2017年07月14日 14:31
  • 2029

强制卸载 office 2007教程

  • 2015年04月13日 16:36
  • 16KB
  • 下载

软件强制卸载

  • 2016年03月13日 16:31
  • 2.01MB
  • 下载

python 利用pip 安装 卸载 更新某个模块

在python的学习过程中,肯定会遇到很多安装模块的地方,可以使用easy_install安装,但是easy_install相对于pip而言,最大的缺陷就是它所安装的模块是不能够卸载的,其他功能是和p...

TrendMicro 强制卸载工具

  • 2013年07月11日 14:59
  • 92KB
  • 下载

MapGIS 10强制卸载工具.zip

  • 2017年04月09日 17:14
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用NtUnmapViewOfSection强制卸载模块
举报原因:
原因补充:

(最多只允许输入30个字)