2012/02/11
CreateProcess
Comments Off on CreateProcess
2012/02/08
几个驱动开发常识
用堆栈中的锁变量来加锁是没有意义的,因为每个线程来执行都会用各自的锁了。
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
Comments Off on 几个驱动开发常识
2012/02/06
禁用任务管理器
以前写过禁用任务管理器,当时的刚学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内就无法呼出任务管理器了。
Comments Off on 禁用任务管理器