随笔分类 - Windows Driver Dev
摘要:MmGetSystemAddressForMdlSafe和MmGetSystemAddressForMdl其实都是宏,都直接或间接的调用了MmMapLockedPagesSpecifyCache内核函数。MmMapLockedPagesSpecifyCache的声明如下:NTKERNELAPI PVOIDMmMapLockedPagesSpecifyCache( IN PMDLMemoryDescriptorList, IN KPROCESSOR_MODEAccessMode, IN MEMORY_CACHING_TYPECacheType, IN PVOIDBaseAddress,
阅读全文
摘要:对于应用程序使用SetProcessAffinityMask/SetThreadAffinityMask。对于内核程序使用KeSetSystemAffinityThread。如果想在多核CPU下做hook IDT就要用这个函数了,有时间写个例子。
阅读全文
摘要:代码如下:PHYSICAL_ADDRESSMmGetPhysicalAddress ( IN PVOID BaseAddress ){ PMMPTE PointerPte; PHYSICAL_ADDRESS PhysicalAddress;//判断是否在[0x80000000,0xA0000000)中,如果是,这段内存被映射到物理内存中[0,20000000),这段内存采用4MB大小的分页。 if...
阅读全文
摘要:PDE:Page Directory EntryPTE:Page Table Entry(记录着虚拟地址的真实物理地址) 用KernelDebug举例说明:kd> !pte 80572000 VA 80572000PDE at C0300804 PTE at C02015C8contains 0003D163 contains 00572121pfn 3d -G-DA--KWEV pfn ...
阅读全文
摘要:pjf(jfpan20000@sina.com) 有来信询问进程结束的有关问题,下面就这个问题简单讨论一下(下面的讨论基于2000,其他NT系统也类似)。 首先看看一个应用程序想要强制结束另一个进程所要做的事:首先获得目标的进程ID,接着利用OpenProcess获取进程句柄(确保足够权限),最后将句柄传给TerminateProcess了结那个进程。 1、OpenProcess通过本机系统...
阅读全文
摘要:操作系统本身并不知道有没有键盘,他的win32子系统csrss.exe会在不停的在一个函数win32k!RawInputThread里寻找\Device\KeyboardClass0或\Device\KeyboardClass1(数字依次累加)。 那么KeyboardClass0、KeyboardClass1等又是怎么来的呢? kbdclass是个upper filter驱动,只要有keybo...
阅读全文
摘要:查找所有设备,从中间找到KeyboardClass0或者kbdclass创建的设备 !object \device 查找设备对象的IRP !irpfind 0 0 device 80e03e38 查看IRP具体信息 !irp 80d839b8 查找发送IRP的线程 !thread 80df54b8 显示Cid 01d0.0210 得知进程ID=01d0,线程ID=0210 !process 01d...
阅读全文
摘要:先罗嗦两句。我前几天刚开始学破解。论坛里优秀的文章很多,给了我很大的帮助。可我在用OD时,却不会用命令行在函数上下断点。虽然OD命令行支持模糊查找,可还是感觉不太方便,所以就自己把OD支持的命令整理了一下,发上来,喜欢对大家的学习有所帮助。 ?/CALC 表达式 计算给定表达式....
阅读全文
摘要:对于没有符号表的驱动程序,先用PE文件找出函数的RVA。 bu XXXX+RVA
阅读全文
摘要:DriverEntry.obj : error LNK2019: unresolved external symbol __RTC_CheckEsp referenced in function _DriverEntry@8 如果出现这种错误,点击DriverEntry.cpp的C++(编译器)选项,将“将Basic Runtime Checks”改成Default
阅读全文
摘要:函数原型如下: NTSTATUS IoOpenDeviceRegistryKey( IN PDEVICE_OBJECT DeviceObject, IN ULONG DevInstKeyType, IN ACCESS_MASK DesiredAccess, OUT PHANDLE DevInstRegKey ); 其中DevInstKeyType为PLUGPLAY_REGKEY_DRIVER时...
阅读全文
摘要:今天才知道居然还有个PsGetProcessImageFileName函数 以前都是读取EPROCESS的偏移0x174
阅读全文
摘要:今天写驱动编译的时候遇到一个问题,link一个比较老的lib时,报错: error LNK2026: module unsafe for SAFESEH image 解决办法: 在Source文件中加入一行 NO_SAFESEH=TRUE 编译时候执行 build -cZg
阅读全文
摘要:不支持dt命令 使用!kdex2x86.strct FILE_OBJECT 80854548 或者使用!ETHREAD 参考资料: http://www.osronline.com/article.cfm?id=64 如果Windbg的命令!strct不管用了,可以将C:\WinDDK\7600.16385.1\Debuggers\w2kfre\kdex2x86.dll拷贝到Windbg的...
阅读全文
摘要:#include <windows.h>#include <stdio.h>typedef ULONG_PTR KSPIN_LOCK, *PKSPIN_LOCK;VOID WINAPIKeInitializeSpinLock( IN PKSPIN_LOCK SpinLock ){ *SpinLock = 0;}__declspec( naked ) V...
阅读全文
摘要:#include <stdio.h>#include <windows.h>#include <winioctl.h>int main(void){ //LPCTSTR lpszDevice = "\\\\.\\PhysicalDrive0"; LPCTSTR lpszDevice = "\\\\.\\C:"; HANDL...
阅读全文

浙公网安备 33010602011771号