利用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 ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

强制卸载目标进程模块

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

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

CSDN GitHub Linux强制卸载内核模块(由于驱动异常导致rmmod不能卸载) LDD-LinuxDeviceDrivers/study/driver/force_rmmod 本...

dll强制卸载器

  • 2016-02-21 14:29
  • 491KB
  • 下载

软件强制卸载

  • 2016-03-13 16:31
  • 2.01MB
  • 下载

模块的编写、编译、载入和卸载

以最简单的Hello World模块为例 1.编写模块 //my_module.c #include #include #include static int hello_ini...

强制卸载 office 2007教程

  • 2015-04-13 16:36
  • 16KB
  • 下载

qq强制卸载清除软件

  • 2014-09-22 22:46
  • 804KB
  • 下载

zen cart -- 批量安装、卸载、配置zen cart支付模块

之前的几个版本不太完善,这个应该相对好一点。 当然稍做修改便可应用 到shipping模块上去,对于大工作量的情况是非常适合的。 其实也可以考虑直接调用zen cart的类来操作的。可能速度会慢一...

office强制卸载-office清理

  • 2011-09-24 11:11
  • 142KB
  • 下载

TrendMicro 强制卸载工具

  • 2013-07-11 14:59
  • 92KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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