|
[原创]利用一个NULL绕过360注册表监控
膜拜了,收藏一下 |
|
|
|
|
|
|
|
[求助]安装了DNF,但是,只要一加载驱动就蓝
感谢4L的同学, 但是有一个问题,就是如果我不运行DNF,加载这个驱动一切正常 相反,运行了DNF,一加载驱动,就蓝了 还有,__asm int 3这句,我的本意是在驱动的入口处断下来 看看问题是在哪里,但是没等用windbg调试,就蓝了 实在不知道什么原因 麻烦大家高手们解释一下 |
|
[求助]安装了DNF,但是,只要一加载驱动就蓝
下面是我自己加载的驱动 高手看看,这个小驱动程序,哪里得罪了DNF? /////////////////////////////////////////////////////// #include <ntddk.h> #include <windef.h> #include "struct.h" #include <ntddkbd.h> ULONG g_OldFunction; ////////////////////////////////////////////////////////////////////////// PVOID GetModlueBaseAdress( char* ModlueName, BOOL bKernelBase ) { ULONG size,index; PULONG buf; NTSTATUS status; PSYSTEM_MODULE_INFORMATION module; PVOID driverAddress=0; ZwQuerySystemInformation(SystemModuleInformation,&size, 0, &size); if(NULL==(buf = (PULONG)ExAllocatePool(PagedPool, size))){ DbgPrint("failed alloc memory failed \n"); return 0; } status=ZwQuerySystemInformation(SystemModuleInformation,buf, size , 0); if(!NT_SUCCESS( status )) { DbgPrint("failed query\n"); return 0; } module = (PSYSTEM_MODULE_INFORMATION)(( PULONG )buf + 1); // 系统模块基址 if ( TRUE == bKernelBase ) { driverAddress = module[0].Base; DbgPrint("KernelBase:%x\n",driverAddress); goto _x_; } // 其他模块基址 for (index = 0; index < *buf; index++) { if (_stricmp(module[index].ImageName + module[index].ModuleNameOffset, ModlueName) == 0) { driverAddress = module[index].Base; DbgPrint("Module found at:%x\n",driverAddress); goto _x_; } } _x_: ExFreePool(buf); return driverAddress; } ULONG FindOldFunctionAddress() { NTSTATUS status = STATUS_SUCCESS; UNICODE_STRING ustrLinkName; UNICODE_STRING ustrDevName; PDEVICE_OBJECT pDevObj; ULONG i, curAddr; PUCHAR FileContent; DWORD dwRet,dwSize; PVOID pTmp; LARGE_INTEGER timeout; KEVENT Kevent; ULONG g_kbdclass_base ; ULONG g_lpKbdServiceCallback ; PDEVICE_OBJECT g_kbDeviceObject = NULL; KEYBOARD_INPUT_DATA kid; ULONG Addr_OldFunction = 0; ULONG code1_sp2=0x8b55ff8b, code2_sp2=0x8b5151ec, code3_sp2=0x65830845,code4_sp2=0x8b530008; //KbdInit(); g_kbdclass_base = (ULONG)GetModlueBaseAdress( "kbdclass.sys",0 ); DbgPrint("kbdclass.sys: 0x%08lx\n", (PVOID)g_kbdclass_base); if ( 0 == g_kbdclass_base ) { DbgPrint("ERROR: g_kbdclass_base == 0\n"); return STATUS_SUCCESS; } curAddr = g_kbdclass_base; // DbgPrint("curAddr: 0x%08lx\n", curAddr); for (i=curAddr;i<=curAddr+0x2000;i++) { // DbgPrint("i: 0x%08lx\n", i); if (*((ULONG *)i)==code1_sp2) { if (*((ULONG *)(i+4))==code2_sp2) { if (*((ULONG *)(i+8))==code3_sp2) { if (*((ULONG *)(i+12))==code4_sp2) { g_lpKbdServiceCallback=i; break ; } } } } } Addr_OldFunction = (ULONG)g_lpKbdServiceCallback; DbgPrint("KeyboardClassServiceCallback: 0x%08lx\n", (PVOID)g_lpKbdServiceCallback); //DbgPrint("g_kbDeviceObject: 0x%08lx\n", (PVOID)g_kbDeviceObject); return Addr_OldFunction; } VOID OnUnload( IN PDRIVER_OBJECT DriverObject ) { } NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath ) { theDriverObject->DriverUnload = OnUnload; __asm int 3 g_OldFunction = FindOldFunctionAddress(); return STATUS_SUCCESS; } |
|
[求助]用windbg跟到这里就蓝了,什么原因?
竹君兄弟,谢谢你 |
|
[求助]用windbg跟到这里就蓝了,什么原因?
ZwQuerySystemInformation( SystemModuleInformation ,&size,0,&size); 竹君兄弟,请解释一下后面三个参数的含义 也就是它们都是什么? 就是红的的三个 谢谢 |
|
|
|
[求助]已经蓝了好多次了,求助啊
谢谢兄弟帮顶 |
|
[求助]已经蓝了好多次了,求助啊
谢谢兄弟帮顶 |
|
|
|
|
|
[原创]另类HookShadow
mark一下,备用 |
|
[原创]Hook Shadow SSDT
只能说学习,帮顶了 |
|
|
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值