Archive for the ‘Windows’ Category
乾坤大挪移inline hook
几个驱动开发常识
用堆栈中的锁变量来加锁是没有意义的,因为每个线程来执行都会用各自的锁了。
DRIVER_OBJECT中有一个派遣函数数组MajorFunctions[IRP_MJ_MAXIMUM_FUNCTION],还有一个单独的DriverUnload。
IoCreateDeviceSecure可以使应用层程序不具备管理员权限的情况下与驱动通信。
UNICODE_STRING uniStr = RTL_CONSTANT_STRING(L"uniStr");
UNICODE_STRING uniStr;
RtlInitUnicodeString(&uniStr, L"uniStr");
32位fastcall第一、二个参数使用ecx和edx传递。
64位使用rcx、rdx、r8和r9传递第一至四个参数。
指令前缀分为普通前缀(Prefixes)、指示性前缀(Mandatory Prefixes)和64位扩展前缀(REX Prefixes)。
LIST_ENTRY.Flink指向下一个LIST_ENTRY
LIST_ENTRY.Blink指向前一个LIST_ENTRY
LIST_ENTRY structure
禁用任务管理器
以前写过禁用任务管理器,当时的刚学Windows程序设计不久,手法拙劣。用的是Timer找任务管理器的窗口,然后干掉它。今天偶然看到另一种方法,其实也是老方法了,只是我才疏学浅才接触到。核心思想就是独占任务管理器的二进制文件。示例代码如下:
HANDLE hFile = CreateFile("C:\\Windows\\System32\\taskmgr.exe", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); if(INVALID_HANDLE_VALUE == hFile) { return -1; } Sleep(10000); CloseHandle(hFile); return 0;
这样10s内就无法呼出任务管理器了。
网络编程总结
PsSetLoadImageNotifyRoutine
试了下PsSetLoadImageNotifyRoutine的功能,代码和结果如下:
XueTr和PowerTool FullImageName不正确,有待研究。