能力值:
( LV2,RANK:10 )
|
-
-
2 楼
如果你知道怎么远程注入 那么也可以用同样的方法进行远程卸载!
///////////////////////////////////////////////////////////
PTHREAD_START_ROUTINE pfnThreadRtn=(PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"FreeLibrary");
hThread=CreateRemoteThread(hProcess,NULL,0,pfnThreadRtn,me.modBaseAddr,0,NULL);
//////////////////////////////////////////////////////////////////////////
除非你知道卸载那个DLL是安全的,否则很容易造成目标进程崩溃
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
多谢指点,能否再说详细一点...
创建远程线程之后,是否还要进行其它操作...还是下面一句就将模块卸载了.
CreateRemoteThread(hProcess,NULL,0,pfnThreadRtn,me.modBaseAddr,0,NULL);
(VC中好像没有me关键字吧,modBaseAddr是否指的要卸载模块的加载基址?)
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
MODULEENTRY32 me;
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
对
先用系统快照把目标进程中模块的句柄弄出来。
然后创建远程线程,用FreeLibrary就可以了。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢谢指点
我试了一下,确实可以,但是好像不能强制卸载,从我调试程序的结果看来,如果目标进程已经加载了这个模块,但没有调用它,是可以卸载的。但是若目标进程正在调用这个模块,就无法卸载。
我想像IceSword那样,有强制卸载的功能,哪怕引起目标进程崩溃,也可以接受。
不知这种方法如何实现...?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
>我想像IceSword那样,有强制卸载的功能,哪怕引起目标进程崩溃,也可以接受。
不知这种方法如何实现...?
调用ntdll.dll 导出的 NtUnmapViewOfSection( HANDLE hProcess, PVOID Address)参数1句柄,参数2基地址
|
|
|