|
|
|
[下载]内核层获取SSDT中函数原始地址
觉得 LoadFile 的编码太防御性了。。。。 每个调用后面都 NT_SUCCESS 。。。。 给我的感觉是 畏首畏脚的。 我喜欢一眼就 hold 住整个函数、我改成这样了: VOID LoadFile(IN PWCH FilePath, OUT PVOID * FileBuffer) { NTSTATUS Status; UNICODE_STRING ImagePath; OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK IoStatusBlock; HANDLE hFile; FILE_STANDARD_INFORMATION FileSize; PVOID Buffer; RtlInitUnicodeString(&ImagePath, FilePath); InitializeObjectAttributes(&ObjectAttributes, &ImagePath, OBJ_CASE_INSENSITIVE, NULL,NULL); Status = ZwCreateFile( &hFile, GENERIC_READ, &ObjectAttributes, &IoStatusBlock, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); // Get file size Status = ZwQueryInformationFile( hFile, &IoStatusBlock, &FileSize, sizeof(FileSize), FileStandardInformation); // Allocate buffer Buffer = ExAllocatePoolWithTag( NonPagedPool, (SIZE_T)FileSize.AllocationSize.QuadPart, 'Dll '); // Read file Status = ZwReadFile( hFile, NULL, NULL, NULL, &IoStatusBlock, Buffer, (LONG)FileSize.AllocationSize.QuadPart, NULL, NULL); if( hFile != NULL) { if ( Buffer && NT_SUCCESS(Status)) { // Success *FileBuffer = Buffer; } ZwClose(hFile); } } |
|
[求助]KiFastCallEntry 调用号大于 0x1000的问题
[QUOTE=loqich;1127764]一般说的调用叫 是减了0x1000的 事实上0x1000是代表第2个表 类似的可以自定义0x2000,ssdt表中预留了这个位置 GetDesktopWindow [/QUOTE] 多谢您的帮助 另外我还觉得有几句的注释不是太好,我改改: 83c88399 03bebc000000 add edi,dword ptr [esi+0BCh] // edi 指向 1. KeServiceDescriptorTable or KeServiceDescriptorTableShadow (由KThread.ServiceTable 决定)。2 是主表 KeServiceDescriptorTable.ntoskrnl/KeServiceDescriptorTableShadow.ntoskrnl 还是 副表KeServiceDescriptorTable.win32k/KeServiceDescriptorTableShadow.win32k (由 调用号是否大于 0x1000 决定) 83c8839f 8bd8 mov ebx,eax 83c883a1 25ff0f0000 and eax,0FFFh // 保留 调用号(16进制表示)的低三位 83c883a6 3b4708 cmp eax,dword ptr [edi+8] // 比较 KSYSTEM_SERVICE_TABLE.NumberOfService |
|
|
|
[讨论]谁来详细的解说一下Deturs 与madcodehook的区别
API Hook 是啥。。。 我只听说过 SSDT Hook / Shadow SSDT Hook / Inline Hook / IAT Hook / EAT Hook / Sysenter Hook / IRP Hook / IDT Hook 你是否在找这种资料?~ http://bbs.pediy.com/showthread.php?t=56817&highlight=hook+combojiang |
|
|
|
[招聘]创业公司招聘安全高手,着重逆向工程领域
兼职。。。。 |
|
!object 和自己读的地址不一样
知道原因了。。。 看一下IoGetDeviceObjectPointer MSDN的解释 The IoGetDeviceObjectPointer routine returns a pointer to the top object in the named device object's stack and a pointer to the corresponding file object, if the requested access to the objects can be granted. 是说返回设备栈顶部的设备对象。。。 |
|
windbg 在不同操作系统之间可以调试吗?
Windows Symbol 呢? |
|
如何知道内核函数在哪个内核模块?
这个比较靠谱 |
操作理由
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 }}
勋章
兑换勋章
证书
证书查询 >
能力值