关于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
相信现在有很多的朋友们对于别墅产权多少年有没有个人了解的都想要了解吧,那么今天小编就来给大家针对别墅产权多少年有没有个人了解的进行一个介绍吧,希望小编介绍的内容能够为大家起到帮助哦 按建筑用类型有所不...
【文章百度收录网说】微信现在是我国应用最普遍的交友软件。但是,很多用户对此项社交媒体服务项目持猜疑心态。由于,在和盆友闲聊后,很多人发觉微信会精确地广告宣传。很多人猜疑微信是不是监控了大家的微信聊天记...
咱们先给浏览器设置一下署理 如图ip是127.0.0.1 端口8080 (ps:由于burp监听的ip是127.0.0.1 端口号是8080 所以咱们要设置成这样 当然子burp中能够修正的)Leve...
本文目录一览: 1、盘点一下,有哪些著名的黑客入侵案? 2、轰动的网络的黑客案有哪些? 3、全球最为严重的黑客入侵事件有哪几起? 4、2017年置美国于危险之中的那些黑客事件? 盘点一下...
中新网1月29日电 据新加坡《联合早报》报道,新加坡总理李显龙当地时间29日早到新加坡中央医院接种第二剂新冠疫苗,完成接种疗程。 接种后,李显龙将接种过程的视频分享至自己的个人社交媒体,并表...
1、马自达3 Axela昂克赛拉 厂商指导价::11.29-16.29万 配置:“创驰蓝天”、“SKYACTIV-DRIVE”6速手动及6速手自一体变速器、SKYACTIV-BODY车身,前麦...