零信任系统与文件透明加解密 - 破解方案 首先零信任系统与文件透明加解密的底层本质都是一样的,就是通过HOOK和驱动技术,对系统接口进行过滤和重定向,制造了一个类似虚拟机的东西,这个虚拟机有很多权限限制,比如禁止你访问网络,不能够将文件拉到本地系统,什么进程通信之类的东西都禁掉了,通过这种手段来保障公司数据的安全。这里有一个重要的点,就是数据返回到第二个节点时,这个时候数据是明文来的。不过直接在第二个驱动节点写文件,IRP 流入到第三个安全驱动节点时,可能会触发一些安全机制,导致失败,其实这也很好解决,毕竟驱动是节点,那你这样写就好了。
多线程误区之:多线程处理I/O效率更快 当I/O线程处理好这个事件,会先判断一下这个事件是否包含回调函数,如果有,就调用回调函数(这就是异步I/O的实现),如果没有回调函数,那么这个事件就会有一个Event对象,I/O线程会调用SetEvent(这就是同步I/O的实现),SetEvent以后,应用层线程就会被唤醒,然后知道读/写事件处理完成,读/写函数返回。寻道机制,就是说机械硬盘有一个磁头,你要读或写磁盘的某个地方时,磁盘会先将磁头定位到磁片正确的位置,然后才开始读写,就是这个磁头定位的过程,就叫寻道,是非常耗时的。
Windows环境下32位汇编语言程序设计 相关资料 Windows环境下32位汇编语言程序设计.pdf:https://474b.com/file/15153148-465076702。ViewApi(DLL查看器).zip:https://474b.com/file/15153148-465077434。Windows PE权威指南.pdf:https://474b.com/file/15153148-465077295。加密与解密(第三版).pdf:https://474b.com/file/15153148-465077298。...
远程唤醒计算机 内网远程唤醒,需要在系统中开启对远程唤醒的支持。原理是使用UDP广播,发送有16个相同MAC地址组成的数据包,网卡收到后会帮我们唤醒计算机。需要被唤醒的计算机中,在设备管理器,找到对应的网络适配器(网卡),在网卡属性中启动【网络唤醒】功能代码:...
MYUI的基本使用 - demo讲解 MYUI 文档目录: MYUI 界面库 (前言)正文:大家下载MYUI仓库后,切换到 Branch_csdn_study 分支,用 VS2019 打开 MYUI.sln 文件,按 F5 即可运行 myui 的 demo。如果想使用 myui ,你可以把 myui 项目编译成 lib 或 dll ,然后再自己的项目中引用 myui.h 头文件即可。当然你也可以将 myui 集成到你的项目中,只需要将代码拷贝一下即可,MYUI 以简单方便为主,不会让开发者进行复杂的操作的。接来下让我们来看看 WinMain
多线程锁详解之【互斥量】 更多的锁介绍可以先看看这篇文章:多线程锁详解之【序章】正文:互斥量,一个应用起来跟临界区十分相似的锁,但互斥量是可以命名的,可以跨进程使用,而临界区只能在单个进程内使用,效率方面互斥量往往也比临界区要低,这是什么原因导致的呢?让我们先来学习一遍互斥锁的源码,再讨论上面提出的问题。源码:先来看看互斥锁是如何创建的:如果你已经看过了事件对象的创建过程,就会发现互斥锁创建的过程是如此的熟悉。这里我们不过多赘述这个函数的流程是做了写什么了,都是一些三板斧动作。主要是讲述一些与其他锁对象不同的地方。首先是函数名
多线程锁详解之【信号量】 如果你有事件对象(Event)的作为基础,那么信号量理解起来将会十分容易。信号量,又名信号灯,是用来限定进入代码区域的次数。大家知道,如果事件对象带有信号自动重置的标记,那么即时事件对象处于有信号的状态下, WaitForSingleObject 函数也只能通过一次,想再次通过 WaitForSingleObject 就必须再次调用 SetEvent 函数。如果事件对象附带的是手动重置信号标记,那么在事件对象有信号的状态下, WaitForSingleObject 函数则可以无限次通过,除非调用 Rese
多线程锁详解之【条件变量】 注:本文以windows临界区作为案例说明,其实各个操作系统中的临界锁的理论是相通的,源码逻辑也是大同小异,其中 linux 系统的 mutex 锁原理与逻辑可以说与windows临界区是一样的。其次是很多开发者对锁的理解只局限于调用,如果需要他们自己实现一个锁,往往无能为力。比如XP系统没有条件变量和读写锁,当应用中需要的时候如何实现?还有如何模仿数据库中的表锁,行锁,网络锁,乐观锁等等。。。理解临界区的底层原理与逻辑,是实现这些锁的第一条件!正文开始先来回顾一下windows 临界区的几个函数:
多线程锁详解之【临界区】 正文:一般锁的类型可分为两种:用户态锁和内核态锁。用户态锁是指这个锁的代码只依赖于用户态,不会陷入内核态执行。而内核态锁很明显就是哪些会陷入内核态执行的锁。一般书中会说,windows 提供了两个用户态锁,一个是原子操作,而另外一个,正是我们要讨论的主题:临界区。原理:临界区作为用户态最常用的锁,它的使用方法并不复杂,就是拥有初始化和反初始化函数,一对 lock 和 unlock 函数,当然还有一个不太常用的 trylock 函数。如下:(1)初始化临界区 InitializeCriticalSecti
获取显卡制作商品牌 背景实现一个获取显卡品牌的接口,由于对硬件不够了解,兜兜转转搞了好几天。刚开始直接从WMI 的 Win32_VideoController 取 AdapterCompatibility 字段数据,后来发现哪个是显卡芯片品牌,不是显卡制作商品牌,只能再从网上去找资料。期间有人说这个技术是商业机密,不能透露实现方式,还有人报价3000帮我处理这个问题。额,价格太高,网上也到处找不到相关的资料,而且我还尝试了 DX,CUDA,MMIO,等技术都没有成功。令我一度以为这个确实是很有深度的技术。后来兜兜转转,同事
通过COM接口选中桌面图标 背景:前段时间开发时遇到一个文件生成到桌面,需要选中桌面图标的功能。大家知道选中文件夹下的文件,可以使用 SHOpenFolderAndSelectItems 函数,当时就想,选中桌面图标,应该也是提供了对应的API。结果网上搜了一圈,没发现对应的API。于是我的目光很快转移到 IShellView 这个COM接口上,去MSDN文档一看,果然有SelectItem这个函数。根据经验,八九不离十 IShellView 能够选中桌面图标。但额外的问题来了,如果才能拿到属于桌面的 IShellView 接口
多线程锁详解之【事件对象】 更多的锁介绍可以先看看这篇文章: 多线程锁详解之【序章】正文:信号量,又名事件锁或者事件,是一个内核锁,可用于跨进程等待。先看看事件锁的头文件定义:对内核有了解的同学都知道,一般应用层的内核函数,下层都会调用对应的【Nt!XXX】函数,那我们再来看看NtCreateEvent源码上面的代码,在不考虑安全性和出错的情况下,我们可以简化为下面这样。.................................
对象创建(ObCreateObject)和对象删除(ObDereferenceObject、ObpRemoveObjectRoutine) 转载来源:https://blog.csdn.net/wzsy/article/details/6188554为对象分配内存看完了, 这次我们看一个比较高层的函数。ObCreateObject, 这是内核的导出函数, 所有模块都可以使用(虽然它没有被文档化…)它的作用是创建指定类型(OBJECT_TYPE)的对象示例。(注意ObAllocateObject只是分配了空间, 这里可以看到后续的操作)这个函数的参数还真多啊。微软函数的参数一直都和火车一样。我们只能淡定。。。NTSTATUSObCrea
多线程锁详解之【原子操作】 原子操作,顾名思义它的操作具有原子性。所谓原子性就是指动作不可分割且独占数据读写。什么是操作不可分割?我们知道系统的线程数总是大于CPU数,系统其实是把这些线程对象放到了一个队列里面,然后轮流把这些线程对象放到CPU核心上,执行对象一部分的代码,周而复始,直至所有的线程代码执行完毕。由于CPU计算速度极快,肉眼上是看不出线程的轮流执行的,但事实上每一个线程对象,确实是轮流地,断断续续地执行,不是连续的。而线程对象这种断断续续执行的特性,我们称之为线程对象的动作是可分割。既然原子性动作不可分割,那就说明原
多线程之锁详解之【序章】 在日常多线程开发中,大家应该碰到过各种形形式式的锁,比如原子变量,事件对象(Event),临界区,互斥量(Mutex)等等。大家有没有好奇过,这些锁的底层是如何实现的呢?比如在XP系统中没有条件变量和读写锁这两个锁,当我们需要在XP系统下自行实现这两个锁的时候,该怎么办?想实现上述两个锁,大家首先需要的入门知识是:CPU缓存行锁与系统中断锁的原理。CPU缓存行锁与系统中断锁这两个锁可能很多人闻所未闻,这里需要告诉大家的是:主流的操作系统中,真正的锁只有这两个!而你们所看到的什么条件变量,临界区,互斥量等