YiMiTuMi

使我进步的不是谦虚,而是别人羡慕我时我的那份骄傲!

定时器

c

封装定时器 参考:天书夜读_从汇编语言到Windows内核编程 结构体: typedef struct _TIMER_INFO //定时器结构体 { KDPC dpc; KTIMER timer; PKDEFERRED_ROUTINE timerFunc; PVOID privateInfo; //用来传递数据 } TIMER_INFO, * PTIMER_INFO; ...

驱动获取当前系统时间

c

获取驱动获取当前系统时间 直接上程序: void GetCurrentTimeToWchar(WCHAR *szTime) { LARGE_INTEGER snow; LARGE_INTEGER now; TIME_FIELDS now_Fields; //WCHAR szTime[32] = { 0 }; //获得标准时间 KeQuerySystemTime(&...

驱动层与应用层通信--MiniFilter

c++

驱动层与应用层通信–MiniFilter 驱动层与应用层通信可以使用 DeviceIoControl 函数发送消息,但是使用 DeviceIoControl 比较麻烦,并且想让驱动层直接发消息到应用层更加麻烦,所以这里使用了MiniFilter。 在这里我依旧使用 DeviceIoControl 发送消息到驱动层(参考:DeviceIoControl发送消息),当驱动层收到 Device...

驱动层与应用层通信--DeviceIoControl

c++

驱动层与应用层通信–DeviceIoControl 使用DeviceIoControl,进行驱动层与应用层的通信。 驱动层程序实现 #include "DriveToolMain.h" #include <Ntstrsafe.h> //名称 #define DEVICE_NAME L"\\Driver\\DriverToolModule" #define SYMBOL_...

Default-Constructor

c++

Default Constructor构建 Default Constructor 只有在编译器需要的时候才会被合成出来,被合成出来的 constructor 只执行编译器所需的行动。也就是说即使有需要为一个 class 合成一个 default constructor,那个 constructor 也不会将我们的 members object 进行初始化,所以设计者必须提供一个明显的 d...

创建共享内存

c++

创建共享内存 当应用层和驱动层通信的时候,可以通过共享内存的方式来实现。即在驱动层分配一块内存,并为这段内存指定一个应用层指针和内核层指针,来进行写入和读取数据。 程序 BOOLEAN CreatMappingAddress(PVOID* pMappingAddSys_Out, PVOID* pShareUserAdd_Out, SIZE_T iNumberOfBytes, PMDL*...

字符串的拷贝与比较

c++

字符串拷贝宏 用于string向char的转换。 定义 #define USSE_NORMAL_LEN (64) #define EFFmin(a, b) (((a) < (b)) ? (a) : (b)) string To char #define SAFE_COPY(x,y) \ if((x) != NULL && (y)!=NULL)\ {\ ...

Windows内存管理

c++

Windows内存管理 工作集: 指进程已映射的物理内存部分(即这些内存块全在物理内存中,并且CPU可以直接访问),还有一部分不在工作集中的虚拟内存则可能在转换列表中(CPU不能通过虚地址访问,需要Windows映射之后才能访问),还有一部分则在磁盘上的页面文件里。 内存管理器的主要任务: 1)将一个进程的虚拟地址空间翻译或映射成物理内存,从而使运行在该进程上下文中的线程读写虚拟地址...

将数据保存到文件中

c++

将结构体保存到文件中 在找不到合适的方式保存数据时,可以将数据保存到文件中,下面以结构体为例,保存其他数据都是一样的,以字节形式进行存储。 保存结构体到文件中 函数接受一个保存结构体的文件路径(后缀自定义即可),接受一个要保存到结构体的结构体指针和结构体大小。 BOOL SaveStructInfoToFile(wstring const &strPath, LPVOID l...

硬件断点HOOK

c++

硬件断点HOOK 一些软件会通过一个线程来循环检测代码的正确性,当你HOOK去修改dll或exe中的代码时会触发这个检测导致被HOOK软件失败。 通过硬件HOOK过检测: 1)不修改检测线程 2)不修改挂钩子函数的代码 在要HOOK的函数地址(函数地址可以用LoadLiberal系列函数获取)处下一个硬件断点,通过我们上面的异常可以获取到这个异常和CONTEXT,可以修改Esp、...