关于SSDTHook的理论知识就不多说了。简单的说一下Delphi开发KMD的一些需要注意的地方...这里使用DDDK---有点自己修改过的痕迹不过区别不大...自己可以看代码1.KeServiceDescriptorTable是一个很特殊的函数...如果直接使用implib来进行创建库的话你会发现这个函数是被忽略的...因为偏移为0所以这个函数基本上只能起到标志作用没有任何实用价值....一些代码中出现了代码:functionSystemService(AFunc:Pointer):PLONG;beginResult:=PLONG(Cardinal(KeServiceDescriptorTable^.ServiceTableBase)+SizeOf(ULONG)*PULONG(ULONG(AFunc)+1)^);end;很容易让人误认为是运行后的返回值(PS:Delphi的函数调用可以不需要写xxx())上面说过因为这个函数几乎是没用的...所以不可能是执行他后返回地址还有一点需要注意的...难道这个地址是说函数的地址??导入表中的确是可以创建这个函数...但是这个函数几乎是没用的...而且系统的SYSLoader也不可能为他填写正确的函数地址...这里取得地址就是他的本身地址...因为他的虚拟偏移为0所以你直接使用代码:PPointer(@KeServiceDescriptorTable)^;得到这个地址就可以了2.fastcall的问题这个问题很头痛.这个函数和delphi的调用方式完全不一样很容易让人误认为是相同的Delphi的寄存器调用方式是eax,edx,ecx,push...,etcvc的fastcall大部分是edx,ecx,etc....所以为了解决这个问题需要自己重写某些代码部分...3.基本上没什么需要注意了自己做好链接库您当然可以使用mickeylan牛为我们 *** 的rmcoff...4.调试部分WinDbg什么的我就不说了...因为无法进行源码调试个人觉得SysDebuger就不错其实a *** 也就那么回事。不是吗?呵呵下面写一个完整的SSDTHook代码:{NtOpenProcess[SSDTHook]ByAnskyaEmail:Anskya[at]Gmail.com}unitDriver;interfaceusesntddk;//---->DDDK.pasfunction_DriverEntry(DriverObject:PDriverObject;RegistryPath:PUnicodeString):NTSTATUS;stdcall;implementationtypeTZwOpenProcess=function(ProcessHandle:PHandle;DesiredAccess:TAccessMask;ObjectAttributes:PObjectAttributes;ClientId:PClientId):NTSTATUS;stdcall;varHookActive:Boolean;ZwOpenProcessNextHook:TZwOpenProcess;//从导入表中获取一个函数的地址functionGetImportFunAddr(lpImportAddr:Pointer):Pointer;stdcall;beginResult:=PPointer(PPointer(Cardinal(lpImportAddr)+2)^)^;end;//KeServiceDescriptorTable+函数名计算SSDT函数偏移functionSystemServiceName(AFunc:Pointer):PLONG;stdcall;varlpKeServiceDescriptorTable:PServiceDescriptorEntry;beginlpKeServiceDescriptorTable:=PPointer(@KeServiceDescriptorTable)^;Result:=PLONG(Cardinal(lpKeServiceDescriptorTable^.ServiceTableBase)+(SizeOf(ULONG)*PULONG(ULONG(AFunc)+1)^));end;//KeServiceDescriptorTable+序号名计算SSDT函数偏移functionSystemServiceOrd(iOrd:ULONG):PLONG;stdcall;varlpKeServiceDescriptorTable:PServiceDescriptorEntry;beginlpKeServiceDescriptorTable:=PPointer(@KeServiceDescriptorTable)^;Result:=PLONG(PLONG(Cardinal(lpKeServiceDescriptorTable^.ServiceTableBase)+(SizeOf(ULONG)*iOrd)));end;//钩子过程functionZwOpenProcessHookProc(ProcessHandle:PHandle;DesiredAccess:TAccessMask;ObjectAttributes:PObjectAttributes;ClientId:PClientId):NTSTATUS;stdcall;beginDbgPrint('ZwOpenProcessHookProc:NewZwOpenProcess(ProcessHandle:0x%.8X,DesiredAccess:0x%.8X,ObjectAttributes:0x%.8X,ClientId:0x%.8X)',ProcessHandle,DesiredAccess,ObjectAttributes,ClientId);Result:=ZwOpenProcessNextHook(ProcessHandle,DesiredAccess,ObjectAttributes,ClientId);DbgPrint('ZwOpenProcessHookProc:NewZwOpenProcess(-):0x%.8X',Result);end;//驱动卸载过程procedureDriverUnload(DriverObject:PDriverObject);stdcall;beginif(HookActive)thenbegina *** cli//disableWPbitpusheaxmoveax,cr0
江南百景图李白珍宝怎么搭配?许多玩家都很想知道,接下来为大家带来江南百景图李白珍宝搭配推荐介绍,希望能够帮助到大家。 江南百景图李白珍宝搭配推荐 一、珍宝推荐 1、太极图 天赋提升: 理财为...
说起会计知识,就有很多相似的专业词,很多人有时候会将这些搞混,分辨不清楚。此次,为大家整理的一篇关于如何区分本票、汇票、支票的文章,小编告诉大家在在看的同时也一定要理解其中的内容。现在一起来看看吧...
娱乐中国讯 2月25日,由安德胜工作室原班人马联合王文团队共同打造的国内首档明星创意模仿综艺安慕希《百变大咖秀》将迎来第五期节目的播出。 上期节目中,何炅cos哪吒,任贤齐、陈浩民空降给观众带来...
大多数的SEOER都知道有nofollow这个标签存在,但大多数的SEOER并不知道如何应用nofollow标签,那么nofollow究竟是什么,在网站上起到了什么作用呢,另外网站上如何增加这个标签呢...
本文导读目录: 1、黑客帝国1,2,3讲的是什么? 2、我想知道《黑客帝国》的大概内容。 3、黑客帝国的剧情介绍 4、黑客帝国具体讲的是什么 5、《黑客帝国》主要讲的什么故事? 6...
一、棋牌输了找黑客(黑客问什么不攻击棋牌软件) 1、寻一款单机游戏的名字应该是魔鬼英豪。下载地址如下: 魔鬼英豪中文版网站还没上线就被黑客攻击了,他是怎么发现我的网站被攻击你要好好对整个网站进行分析...