导航

心动吧DELPHI网络书

自发研究:须要多维思想而且要想不可能为可能的人才能做到

« WinInet 下载文件示例delphi编写的时出现 runtime error 216 at 数字 的解决方法 »

用DDDK编写驱动,修改SSDT表HOOK NTDebugActiveProcess函数

用DDDK编写驱动,修改SSDT表HOOK NTDebugActiveProcess函数





代码如下

 

代码:

 

unit driver;

interface

uses DDDK;

function _DriverEntry(DriverObject: PDriverObject; RegistryPath:
PUnicodeString): NTSTATUS; stdcall;

var
POldDebugActiveProcess: PLong; //保存NTDebugActiveProcess函数在SSDT表中的指针。
OldDebugActiveProcessAdd : PLong; //保存原来的NTDebugActiveProcess函数的地址。
implementation

function MyDebugActiveProcess(PID:ULong):Boolean;stdcall; //Hook函数
begin
Result := False;
end;

procedure DriverUnload(DriverObject: PDriverObject); stdcall;
begin
asm //关中断
cli
mov eax,cr0
and eax,not $10000
mov cr0,eax
end;

POldDebugActiveProcess^ := ULong(OldDebugActiveProcessAdd); //恢复SSDT

asm //开中断
mov eax,cr0
or eax,$10000
mov cr0,eax
sti
end;
//DbgPrint('DriverUnload(DriverObject:0x%.8X)',[DriverObject]);
//DbgPrint('DriverUnload(-)',[]);
end;

function _DriverEntry(DriverObject: PDriverObject; RegistryPath:
PUnicodeString): NTSTATUS; stdcall;
begin

DriverObject^.DriverUnload := @DriverUnload;
POldDebugActiveProcess := Pointer(ULONG(KeServiceDescriptorTable.ServiceTableBase) + $39
* 4); //$39为NTDebugActiveProcess在XP SP2中的服务号,可由IceSword查出。
OldDebugActiveProcessAdd := Pointer(POldDebugActiveProcess^);//保存原来的NTDebugActiveProcess函数地址,以备驱动卸载时候恢复。

asm //关中断
cli
mov eax,cr0
and eax,not $10000
mov cr0,eax
end;
POldDebugActiveProcess^ := ULong(@MyDebugActiveProcess);//修改SSDT表,将服务号为$39的函数改为自己的钩子函数地址,以实现HOOK。

asm //开中断
mov eax,cr0
or eax,$10000
mov cr0,eax
sti
end;
Result := STATUS_SUCCESS;


end;

end.
钩子函数中可以判断PID号,决定是否放行,放行则在钩子函数中调用原来的NTDebugActiveProcess函数.否则直接返回False.HOOK成功后所有调用DebugActiveProcess的程序将会失效.当然可以按照你的需要HOOK更多的系统服务函数.同一服务函数的服务号在每个操作系统版本中是不同的.下面附件中编译完成的驱动请在WinXP SP2的环境下测试.否则可能会导致直接重启.开个NotePad用OD附加你的NotePad即能看到效果.

DDDK可以在盒子 http://www.2ccc.com/article.asp?articleid=3681 下载得到.

 

原创文章如转载,请注明:转载自心动吧DELPHI网络书 [ http://www.abcxd.com/delphi/ ]

本文链接地址:http://www.abcxd.com/delphi/abcxddelphi/DELPHIHACKER/delphi-DDDK-SSDT-HOOK.html

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热文排行使用

本年排行使用

本月排行使用

网站分类

搜索内容

最新评论及回复

最近发表

所属分类下的文章

日历

Copyright ⊙ 2004-2009 心动吧 UrL:ABCXD.CoM All RiGhts Reserved