社区
进程/线程/DLL
帖子详情
XP哪些进程不能注入DLL挂钩子?
sojia
2008-08-19 04:06:15
很奇怪,我的一个全局钩子自己运行完全没有问题,
我和同学用完全相同的XP盘状的两个虚拟机,
我的机器上运行完全没有问题,他的注入后说什么services.exe出错,
郁闷,我现在都怀疑是不是挂钩和硬件有关了。
以前他的是注入winlogon后蓝屏,我的没有问题,所以后来我就不注winlogon了
请教高手,这是什么原因引起的
或者挂钩有哪些要注意的??
...全文
195
8
打赏
收藏
XP哪些进程不能注入DLL挂钩子?
很奇怪,我的一个全局钩子自己运行完全没有问题, 我和同学用完全相同的XP盘状的两个虚拟机, 我的机器上运行完全没有问题,他的注入后说什么services.exe出错, 郁闷,我现在都怀疑是不是挂钩和硬件有关了。 以前他的是注入winlogon后蓝屏,我的没有问题,所以后来我就不注winlogon了 请教高手,这是什么原因引起的 或者挂钩有哪些要注意的??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lvshaoqing
2008-08-19
打赏
举报
回复
我刚才试了下,卡吧和瑞心的进程,哈哈完全不行....
sojia
2008-08-19
打赏
举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
SendMessage可能存在两种问题:
1、SendMessage向其它线程的窗口发消息时,要等待窗口处理完该消息后才返回,有些时候程序是不能等待的,所以可能会引发问题;
2、每个进程都有自己独立的地址空间,进程间不能利用指针来传递数据,否则很容易产生异常。
根据你的问题描述来看,应该是Hook的代码本身出了问题,你把代码贴出来看看。
[/Quote]
除了SendMessage,有其他不使用指针传递消息的方法吗?
我现在只会用也只知道SendMessage这一个?
sojia
2008-08-19
打赏
举报
回复
[Quote=引用 5 楼 cnzdgs 的回复:]
SendMessage可能存在两种问题:
1、SendMessage向其它线程的窗口发消息时,要等待窗口处理完该消息后才返回,有些时候程序是不能等待的,所以可能会引发问题;
2、每个进程都有自己独立的地址空间,进程间不能利用指针来传递数据,否则很容易产生异常。
根据你的问题描述来看,应该是Hook的代码本身出了问题,你把代码贴出来看看。
[/Quote]
首先感谢!
注入DLL我用的是Windows 程序设计(王艳平)编写的类:class CRemThreadInjector。开始时枚举所有进程,远程注入,
HOOKAPI用得Jeffrey的CAPIHook类 ,都没有做修改。
HOOKAPI很多贴一两个吧:
extern CAPIHook g_WriteFile;
CAPIHook g_WriteFile("kernel32.dll", "WriteFile", (PROC)Hook_WriteFile);
HANDLE WINAPI Hook_WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
{
typedef HANDLE (WINAPI *PFNTERMINATEPROCESS)(HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED);
// 取得主模块的文件名称
char szPathName[MAX_PATH];
::GetModuleFileName(NULL, szPathName, MAX_PATH);
/////////////////////////////////////////////////////////
NTSTATUS status = -1;
HMODULE hNtdll = NULL;
IO_STATUS_BLOCK IoStatus = {0};
wchar_t FileInfo[MAX_PATH+2];
LPSTR p;
char szFilePath[MAX_PATH];
RtlZeroMemory(szFilePath, MAX_PATH);
hNtdll = LoadLibrary(_T("ntdll.dll"));
if(hNtdll!=NULL)
{
NtQueryInformationFile = (NTQUERYINFORMATIONFILE)GetProcAddress(hNtdll, "NtQueryInformationFile");
if(NtQueryInformationFile!=NULL)
{
if (hFile != INVALID_HANDLE_VALUE)
{
RtlZeroMemory((void*)&FileInfo, MAX_PATH);
status = NtQueryInformationFile(hFile, &IoStatus, (PVOID)FileInfo, MAX_PATH+2, FileNameInformation);
if (NT_SUCCESS(status))
{
wchar_t* temp=&FileInfo[0];
temp=temp+2;
char* AnsiPath=UnicodeToAnsi((LPCTSTR)temp);
GetFullPathNameA(AnsiPath, MAX_PATH, szFilePath, &p);
}
}
}
}
FreeLibrary(hNtdll);
////////////////////////////////////////////////////////////////
// 构建发送给主窗口的字符串
char sz[2048];
wsprintf(sz, "%d\r\n%s\r\nWriteFile\r\n%s\r\n", ::GetCurrentProcessId(), szPathName, szFilePath);
// 发送这个字符串到主对话框
COPYDATASTRUCT cds = { ::GetCurrentProcessId(), strlen(sz) + 1, sz };
::SendMessageTimeout(::FindWindow(NULL, "HookComu"), WM_COPYDATA, 0, (LPARAM)&cds, SMTO_ABORTIFHUNG, 10, NULL);
return ((PFNTERMINATEPROCESS)(PROC)g_WriteFile)(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, lpOverlapped);
}
此外还HOOK了很多注册表的操作,大约HOOk了28个API
cnzdgs
2008-08-19
打赏
举报
回复
SendMessage可能存在两种问题:
1、SendMessage向其它线程的窗口发消息时,要等待窗口处理完该消息后才返回,有些时候程序是不能等待的,所以可能会引发问题;
2、每个进程都有自己独立的地址空间,进程间不能利用指针来传递数据,否则很容易产生异常。
根据你的问题描述来看,应该是Hook的代码本身出了问题,你把代码贴出来看看。
sojia
2008-08-19
打赏
举报
回复
[Quote=引用 2 楼 lvshaoqing 的回复:]
全局钩子有什么好的啊...最底层的东西又钩不到...而且全局钩子很容易出事情.
[/Quote]
那你有什么更好的方法吗?
sojia
2008-08-19
打赏
举报
回复
[Quote=引用 1 楼 cnzdgs 的回复:]
与你的代码有关,你试试什么都不做应该就没问题了。
[/Quote]
不知道全局钩子对操作有什么限制,
比如说不能发送进程间的消息等等?
我就是钩到我要的API 后用sendmessage返回主模块一个消息,
而且在我的机器上运行完全没有问题
lvshaoqing
2008-08-19
打赏
举报
回复
全局钩子有什么好的啊...最底层的东西又钩不到...而且全局钩子很容易出事情.
cnzdgs
2008-08-19
打赏
举报
回复
与你的代码有关,你试试什么都不做应该就没问题了。
利用输入法
注入
DLL
Ring3下
注入
DLL
的另类方法,能过杀软和游戏NP(源码)
注入
DLL
是做全局
钩子
或者拦截类软件都有可能用到的技术,如果做外
挂
的话我们也有 可能需要
注入
一个
DLL
到游戏
进程
中去干点什么“坏事”。 但我们知道现在要
注入
DLL
是越 来越难了。场景1:制作火星文输入法外
挂
,原理是利用API HOOK拦截并修改输入法相关函 数,需要
注入
一个
DLL
到所有
进程
中,但是后来发现,在开启了瑞星的帐号保险箱后,用户 将
不能
在QQ中输入火星文。原因是瑞星保护了QQ
进程
,禁止对其
注入
DLL
,解决方法是提示 用户关闭帐号保险箱 -_-| 确实是很降低用户体验的一个不是办法的办法。场景2:制作某 游戏外
挂
,需要
注入
一个
DLL
到游戏
进程
中去直接调用游戏函数完成某一功能。结果发现该 游戏有NP保护,OpenProcess打不开,创建远程线程也不行,试用其它方法也一一失败。遇 到上面的情况,高手们自然是转到Ring0下面去,使用驱动之类的办法来对付啦,不过吾等 菜鸟可就是酒井没法子了 -_-| 不过也别太灰心,凡事总会有办法的。我想我们需要一种持久的、稳定的、不容易被安 全软件屏蔽的
DLL
注入
方法,后来发现,输入法程序就是能完成这一任务的理想人选。输入 法程序程序到底是什么?它没有自己的
进程
,并且在系统还没有登录时就已被加载(在欢迎 界面你也可以调出输入法),它可以在游戏中打开,也可以在控制台程序中打开,还可以在 瑞星保护下的QQ中打开,在杀软中也可以打开,这不就是我们要找的特性吗。那么,输入法 到底是什么呢?根据Windows的规定,输入法其实就是一个
DLL
,不过它是一个特殊的
DLL
, 它必须具有标准输入法程序所规定的那些接口,输入法是由输入法管理器(imm32.
dll
)控 制的,输入法管理器又是由user32.
dll
控制的。输入法在系统目录是以IME为扩展名的文件 ,当在应用程序中激活某个输入法时,输入法管理器就会在那个应用程序的
进程
中加载对应 的IME文件,注意,加载IME文件跟加载普通的
DLL
并没有本质区别,所以,可以认为,输入 法其实就是
注入
到应用程序中的一个
DLL
文件,并且,这种“
注入
”是不会被杀软和游戏NP 拦截的(至少目前是)。现在,我们已经有了一个
注入
DLL
的另类方法,那就是利用输入法 。具体流程是这样,首先制作一个标准输入法文件,但是这个输入法并不完成文字输入工作 ,它的唯一任务就是用来
注入
DLL
,所以称为“服务输入法”,然后,制作一个控制程序, 来控制服务输入法,当然最后还需要一个用于
注入
的目标
DLL
,这样一共就有3个文件。开始 工作后,控制程序首先将服务输入法安装到系统中,然后传递几个参数给服务输入法,参数 中包括了需要
注入
的
DLL
文件的名称和路径,然后,控制程序将服务输入法设置为系统的默 认输入法,这样新的程序一打开,服务输入法就会
注入
那个程序。当然,在服务输入法安装 之前打开的程序不会被
注入
,这时需要向系统中的所有窗口POST一条 WM_INPUTLANGCHANGEREQUEST消息,该消息可以在指定窗口中后台激活服务输入法,这样, 系统中所有拥有窗口的
进程
就都被我们的服务输入法
注入
了。服务输入法
注入
程序之后,就 会根据控制程序传递过来的参数加载目标
DLL
,这样目标
DLL
也就随着服务输入法一同
注入
到 目标程序中了。注意服务输入法是控制程序用WM_INPUTLANGCHANGEREQUEST消息在所有窗口 中自动激活的,如果某个窗口自动激活失败,你就需要在那个窗口中手工切换到服务输入法 ,这样才能
注入
进去了。至于
注入
以后,你就可以在窗口中切换到别的输入法,这并不会影 响已经
注入
进去的
DLL
。我将这一套功能制作成一个完整的示例,你可以在以下地址下载: http://www.pen88.com/download/imehook.rar 压缩包中的第6个和第8个文件夹演示了此 功能并包含所有源代码。其中文件ime
dll
host09.
dll
就是服务输入法,运行时会被安装到系 统中,控制程序退出时会自动卸载该输入法,这样用户就不太容易察觉,你还可以重新编译 该输入法,将名称改为“中文(中国)”,这样隐蔽性更好。文件hxw
dll
wx.
dll
是演示用的 目标
DLL
,你可以替换成自己的
DLL
,然后那个exe文件就是控制程序了。输入法 ime
dll
host09.
dll
在运行时会被复制到系统目录并更名为ime
dll
host09.ime,它导出了2个 函数用于控制。在VB中的声明为: Public Declare Function IMESetPubString Lib "ime
dll
host09.ime" (ByVal Run
DLL
Str As String, ByVal Unload
Dll
As Long, ByVal loadNextIme As Long, ByVal
Dll
Data1 As Long, ByVal
Dll
Data2 As Long, ByVal
Dll
Data3 As Long) As Long Public Declare Function IMEClearPubString Lib "ime
dll
host09.ime" () As Long 其中IMESetPubString用于向输入法传递要
注入
的
DLL
等参数。Run
DLL
Str,要
注入
的
DLL
命令 和完整路径。Unload
Dll
,当输入法退出时,是否同时卸载目标
DLL
0-是,1-否。 loadNextIme,当切换至该服务输入法时,是否直接切换到下一个输入法(这样服务输入法 就好像被跳过了,可最小限度影响用户的输入法顺序) 0-否,1-是。
Dll
Data1,
Dll
Data2 ,
Dll
Data3是传递给目标
DLL
的回调函数(函数名称必须为Run
Dll
HostCallBack)的参数, 你可以在目标
DLL
中导出一个函数,名称为Run
Dll
HostCallBack,这样当输入法
注入
时会调 用目标
DLL
的该回调函数并向其传递这3个参数。函数原型为(VC): DWORD Run
Dll
HostCallBack(DWORD calldata1, DWORD calldata2,DWORD calldata3); IMEClearPubString函数用于清除输入法的配置,清除后,输入法将停止在新的程序中
注入
目标
DLL
,但已
注入
的
DLL
不会卸载。 好了,利用输入法来
注入
DLL
基本上就是这样了,详细的用法大家可以看压缩包中的第8个文 件夹,其中服务输入法是VC写的,控制程序是VB的,代码都是有注释的。测试发现该方法能 过目前所有杀软,也能
注入
冰刃。当然缺点还是有的,就是目标程序如果不接受输入法那就 没办法了,但是现在一般的游戏都不会禁止玩家在里面打字吧,而且杀软也
不能
禁止用户输 入汉字吧,哈哈,所以通用性应该还是蛮好的。 最后,我再介绍另一个
注入
DLL
的方法,估计也很少被用到。是利用一个未公开函数 RegisterUserApiHook,可以在网上搜索关键词“RegisterUserApiHook”,查到有人在 Windows 2003下测试成功,但是我在Windows
XP
测试却失败。后来终于找到了失效的原因。 RegisterUserApiHook函数可以在系统中注册一个全局
钩子
,你需要在
钩子
中指定一个
DLL
和 一个回调函数,然后,所有加载了user32.
dll
的程序就都会在启动时加载你指定的这个
DLL
。用这个函数来
注入
DLL
也是很不错的。但是测试发现它的
注入
能力似乎赶不上上面提到的 利用输入法来
注入
的办法,可以
注入
一般的程序和某些安全程序,但是对冰刃无效。而且它 有一个限制,就是系统中只能同时存在一个这样的
钩子
。实际上这个
钩子
平时是被系统中的 Themes服务占用了,Themes服务正是利用这个
钩子
HOOK了绘制窗口的相关API,所以才让所 有程序窗口变成
XP
主题样式的。所以我们要用这个
钩子
的话,必须先关闭Themes服务,这样 在
XP
下也可以用了,但是这样系统就变成Windows 2000的样式了 -_-| RegisterUserApiHook函数的VB声明如下: Public Declare Function RegisterUserApiHook
XP
Lib "user32" Alias "RegisterUserApiHook" (ByVal hInstance As Long, ByVal fnUserApis As Long) As Long Public Declare Function RegisterUserApiHook2003 Lib "user32" Alias "RegisterUserApiHook" (pRegInfo As HookAPIRegInfo2003) As Long 可以看到,在
XP
和2003下这个函数的参数是不一样的。关于此函数的示例代码,请参见压缩 包中的第5个文件夹。 最后的最后,再介绍一个未公开函数InitializeLpkHooks,这个函数在网上能找到的资料更 少,只有一个声明而已。但是它名称中最后那个“Hooks”误导了我,我以为又是一个可以 用来
注入
DLL
的不错函数,用OD反出来一看,原来只是个局部HOOK而已。虽然没太大用,还 是一并写上吧,也许谁用得着呢。InitializeLpkHooks顾名思义就是HOOK LPK的,Windows 有个lpk.
dll
,就是支持多语言包的那么个功能。测试发现好多程序在TextOut之前似乎是要 调用lpk.
dll
里面的相关函数的,可能是支持多语言的程序就需要用这个来判断到底要显示 那种语言吧。而InitializeLpkHooks,就是用来HOOK lpk.
dll
里面的4个函数的,这4个函数 是LpkTabbedTextOut,LpkPSMTextOut,LpkDrawTextEx,LpkEditControl。我们先打开VB, 在窗体中加入以下代码吧: Private Sub Form_Load()
DLL
hwnd = LoadLibrary("lpk.
dll
") '加载
DLL
DLL
FunDre = GetProcAddress(
DLL
hwnd, "LpkDrawTextEx") '获取回调函数地址 LpkHooksInfo.lpHookProc_LpkTabbedTextOut = 0 LpkHooksInfo.lpHookProc_LpkPSMTextOut = 0 LpkHooksInfo.lpHookProc_LpkDrawTextEx = GetLocalProcAdress(AddressOf HookProc1) '设置要HOOK的LPK函数 LpkHooksInfo.lpHookProc_LpkEditControl = 0 InitializeLpkHooks LpkHooksInfo End Sub Private Sub Form_Unload(Cancel As Integer) LpkHooksInfo.lpHookProc_LpkTabbedTextOut = 0 LpkHooksInfo.lpHookProc_LpkPSMTextOut = 0 LpkHooksInfo.lpHookProc_LpkDrawTextEx =
DLL
FunDre LpkHooksInfo.lpHookProc_LpkEditControl = 0 InitializeLpkHooks LpkHooksInfo FreeLibrary
DLL
hwnd End Sub 然后新建一个模块,在模块中加入以下代码: Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long ' ----------------未公开函数-------------------------------------- Public Declare Sub InitializeLpkHooks Lib "user32" (lpProcType As Any) Type LpkHooksSetting lpHookProc_LpkTabbedTextOut As Long lpHookProc_LpkPSMTextOut As Long lpHookProc_LpkDrawTextEx As Long lpHookProc_LpkEditControl As Long End Type ' ------------------------------- Public
DLL
hwnd As Long,
DLL
FunDre As Long Public LpkHooksInfo As LpkHooksSetting Public Function GetLocalProcAdress(ByVal lpProc As Long) As Long GetLocalProcAdress = lpProc End Function Function HookProc1(ByVal a1 As Long, ByVal a2 As Long, ByVal a3 As Long, ByVal a4 As Long, ByVal a5 As Long, ByVal a6 As Long, ByVal a7 As Long, ByVal a8 As Long, ByVal a9 As Long, ByVal a10 As Long) As Long HookProc1 = 0 End Function 运行一下看看,是不是窗体中标题栏和按钮上的文字都没有了,因为我们把函数 LpkDrawTextEx替换成自己的函数HookProc1了。这个函数有10个参数,其中几个好像是字符 串指针,似乎可以用来截获窗体要显示的文字,然后改成另一种语言的文字,我猜想,也许 就是这个用途吧。哈哈,纯属猜测。以上就是函数InitializeLpkHooks的用法了。 以上就是全部。 本文所有示例代码的下载地址是: http://www.pen88.com/download/imehook.rar 我的QQ511795070,欢迎交流。
xp
系统隐藏
进程
代码
可以将指定的
进程
隐藏。纯汇编源码。 采用远程线程的办法,将一个程序的执行代码
注入
到其他
进程
中。从而达到隐藏自身的目的。
驱动层
注入
dll
demo,源码未传
行为监控最好的方式是远程
注入
dll
,应用层设置的全局
钩子
,对非消息模式的
进程
无效;或者其他方法,有权限不同、session不同、
注入
滞后等弱点。本demo是在驱动层,
进程
创建完毕还未执行主线程时,即
注入
dll
,对系统
进程
、普通
进程
等
注入
都有效,不会遗漏行为监控,支持从
xp
到win10各个版本的32位和64位系统。
WIN下 修改,伪装
进程
路径。支持
XP
,WIN7 WIN764
WIN下 修改,伪装
进程
路径。支持
XP
,WIN7 WIN764
window内核监控工具源代码
一:SSDT表的hook检测和恢复 ~!~~~ 二:IDT表的hook检测和恢复 ~~~~~~(idt多处理器的恢复没处理,自己机器是单核的,没得搞,不过多核的列举可以) 三:系统加载驱动模块的检测 通过使用一个全局hash表(以DRIVEROBJECT为对象)来使用以下的方法来存储得到的结果,最终显示出来 1.常规的ZwQuerySystemInformation来列举 2通过打开驱动对象目录来列举 3搜索内核空间匹配驱动的特征来列举(这个功能里面我自己的主机一运行就死机,别的机器都没事,手动设置热键来蓝屏都不行,没dump没法分析,哎,郁闷) 4从本驱动的Modulelist开始遍历来列举驱动 四:
进程
的列举和
进程
所加载的
dll
检测 采用以下方法来列举
进程
: 1ZwQuerySystemInformation参数SystemProcessesAndThreadsInformation来枚举 2
进程
EPROCESS 结构的Activelist遍历来枚举 3通过解析句柄表来枚举
进程
4通过Handletablelisthead枚举
进程
5
进程
创建时都会向csrss来注册,从这个
进程
里面句柄表来枚举
进程
6通过自身
进程
的HANDLETABLE来枚举
进程
7通过EPROCESS的SessionProcessLinks来枚举
进程
8通过EPROCESS ---VM---WorkingSetE
xp
ansionLinks获取
进程
9暴力搜索内存MmSystemRangeStart以上查找PROCESS对象
进程
操作:
进程
的唤醒和暂停通过获取PsSuspendProcess和PsResumeProcess来操作的
进程
结束通过
进程
空间清0和插入apc。 采用以下方法查找
DLL
: 1遍历VAD来查找
dll
2
挂
靠到对应的
进程
查找InLoadOrderLinks来枚举
dll
3暴力搜索对应
进程
空间查找pe特征来枚举
dll
DLL
的操作:
Dll
的卸载是通过MmUnmapViewOfSection和MmmapViewOfSection(从sdt表中相应函数搜索到的)来实现的(本来想直接清0
dll
空间,有时行有时不行)(只要将这个
进程
的nt
dll
卸载了,
进程
就结束了,一个好的杀
进程
的办法撒,绿色环保无污染),
注入
dll
使用的是插入apc实现的。(
注入
的
dll
必须是realse版的。Debug版会出现***错误,全局
dll
注入
貌似也是)插入apc效果不是很好,要有线程有告警状态才执行。 五:线程信息的检测 遍历ThreadList来枚举线程 线程的暂停和唤醒都是通过反汇编获取PsResumeThread和PsSuspendThread直接从r3传来ETHREAD来操作的,通过插入APC来结束线程 六:shadow sdt表的hook检测与恢复 没有采用pdb来解决函数名问题,直接写入
xp
和03的shandow表函数名(主要是自己的网不稳定,连windbg有时都连不上微软) 七:系统所有的过滤驱动的检测 查看各device下是否
挂
接有驱动之类的,可直接卸载 八:系统常用回调历程的检测和清除 只检查了PsSetLoadImageNotifyRoutine PsSetCreateThreadNotifyRoutine PsSetCreateProcessNotifyRoutine CmRegisterCallback这几个,至于那个什么shutdown回调不知道是啥玩意,就没搞了,有知道的顺便告诉我下撒,谢谢 九:文件系统fat和ntfs的分发函数检测 直接反汇编fat和ntfs的DriverEntry得到对应的填充分发的偏移,然后和当前已经运行的文件系统的分发相比是否被hook,并附带恢复 十:文件查看功能 自己解析ntfs和fat的结构,来实现列举文件和直接写磁盘删除。附带有普通的删除和发生IRP来删除。不过这里面有点问题,ntfs删除有时把目录给搞坏了,大家凑合着吧, Ntfs网上删除这些操作的代码不多,就是sudami大大的利用ntfs-3g来实现的,看了下,太多了,充满了结构。然后自己对照着系统删除文件时目录的变化来自己实现的。只处理了$BITMAP对应的位清除,父目录的对应文件的索引项的覆盖,删除文件对应的filerecord清0. 另外偷懒时间都没处理,呵呵,y的,一个破时间都都搞好几个字节移来移去的。 十一:常用内核模块
钩子
的检测和恢复 这里只检测了主要的内核模块nkrnlpa**.exe的.win32k.sys,hal.
dll
,比对它们的原始文件从而查找eat inline hook,iat hook ,和inline hook。Inline是从TEXT段开始一段位置开始比较的。(有点慢貌似,等待显示扫描完成就好了) 十二:应用层
进程
所加载
dll
的
钩子
应用层
钩子
检测和内核模块
钩子
检测原理一样,不过为了能读写别的
进程
的空间,并没有使用openprocess去打开
进程
,而是通过KiattachProcess
挂
靠到当前
进程
,然后通过在r0直接读写
进程
空间的。
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章