日常办公中,我们经常会遇到需要匹配表,匹配对应数据的场景,在EXCEL中,我们习惯使用VLOOKUP函数或者是X-LOOKUP函数,今天学习的是Python,pandas库中的匹配功能。 首先导入所需的pandas库。 import pandas as pd 用到的模拟数据共三张表,分别是销售表,区
## 一、设计模式概述: **设计模式(Design pattern)**代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。是一套被反复使用的、多
学习文章:全同态加密是否完美?-2017 引言 分类&发展 第一代FHE ⚠️: 电路:算法可以用电路表示(实现) 电路深度:电路中任意路径所含有的最大电路门的个数 自举:在密态环境下下,利用计算密钥(加密的密钥)来计算解密电路,得到结果仍是密文。 第二代FHE ⚠️: 循环安全假设:在计算“加密密
> 学习&转载文章:[安全多方计算(2):隐私信息检索方案汇总分析](https://mp.weixin.qq.com/s/7JF-g6m8RLPWf0QgbYE-7g) ## 前言 **多头贷问题**是网络小额贷款平台放款时所要考虑的一个重要问题。假设银行A有一潜在贷款客户小张,银行A为了足够多的
学习文章:C语言中的窗口滑动技术 滑动窗口法 C语言中的窗口滑动技术 循环几乎是每个复杂问题的一部分。太多的循环/嵌套循环会增加所需的时间,从而增加程序的时间复杂性。窗口滑动技术是一种计算技术,用于减少程序中使用的嵌套循环的数量,通过用单个循环代替嵌套循环来提高程序的效率。 如果你熟悉计算机网络中的
身为程序员的你,不知道在你身上曾经有没有发生过,因为种种原因,导致项目延期的情况?(约定某个时间点上线,结果拖到几天时间后)这里面我相信肯定有一些客观因素存在:比如就像上文最后一幅漫画图所描述的那样,市场专员为了拿到单子,在客户面前乱许诺,最后单子拿下来了,却给技术人员造成了非常大的开发压力,程序员不得不面临加班加点996的情况。(明明一个月的工作量,缩短到2周交付) 客观因素发生的时候,身为程序
前言 前几章教程我们把ToDoList系统的基本框架搭建好了,现在我们需要根据我们的需求把ToDoList系统所需要的系统集合(相当于关系型数据库中的数据库表)。接下来我们先简单概述一下这个系统主要需要实现的功能以及实现这些功能我们需要设计那些数据库集合。 MongoDB从入门到实战的相关教程 Mo
主要整理了N多年前(2010年)学习C++的时候开始总结的知识点,好长时间不写C++代码了,现在LLM量化和推理需要重新学习C++编程,看来出来混迟早要还的。 1.shared_ptr 解析:shared_ptr是一种计数指针,当引用计数变为0时,shared_ptr所指向的对象将会被删除。如下所示
AR是一项现实增强技术,即在视觉层面上实现虚拟物体和现实世界的深度融合,打造沉浸式AR交互体验。而想要增强虚拟物体与现实世界的融合效果,光照估计则是关键能力之一。 人们所看到的世界外观,都是由光和物质相互作用而决定的,当光源照射到物体上时,光线通过被吸收、反射和透射等方式,传递给人们物体的颜色、亮度
如果只是想简单地对整个程序做计算统计,通常使用UNIX下的time命令就足够了。由于我用的是Mac系统,和Linux系统的输出可能有不同,不过关键都是这三个时间:user: 运行用户态代码所花费的时间,也即CPU实际用于执行该进程的时间,其他进程和进程阻塞的时间不计入此数字;system: 在内核中执行系统调用(如I/O调用)所花费的CPU时间。total(Linux下应该是real):即挂钟时间
数据抽象屏障是控制复杂性的强有力工具,然而这种类型的数据抽象还不够强大有力。从一个另一个角度看,对于一个数据对象可能存在多种有用的表示方式,且我们希望所设计的系统能够处理多种表示形式。比如,复数就可以表示为两种几乎等价的形式:直角坐标形式(实部和虚部)和极坐标形式(模和幅角)。有时采用直角坐标更方便,有时采用幅角更方便。我们希望设计的过程能够对具有任意表示形式的复数工作。
本章将探索驱动程序开发的基础部分,了解驱动对象`DRIVER_OBJECT`结构体的定义,一般来说驱动程序`DriverEntry`入口处都会存在这样一个驱动对象,该对象内所包含的就是当前所加载驱动自身的一些详细参数,例如驱动大小,驱动标志,驱动名,驱动节等等,每一个驱动程序都会存在这样的一个结构,首先来看一下微软对其的定义,此处我已将重要字段进行了备注。
在前面的文章`《驱动开发:内核解析PE结构导出表》`中我们封装了两个函数`KernelMapFile()`函数可用来读取内核文件,`GetAddressFromFunction()`函数可用来在导出表中寻找指定函数的导出地址,本章将以此为基础实现对特定`SSDT`函数的`Hook`挂钩操作,与`《驱动开发:内核层InlineHook挂钩函数》`所使用的挂钩技术基本一致,不同点是前者使用了`CR3`
在笔者上一篇文章`《驱动开发:内核实现SSDT挂钩与摘钩》`中介绍了如何对`SSDT`函数进行`Hook`挂钩与摘钩的,本章将继续实现一个新功能,如何`检测SSDT`函数是否挂钩,要实现检测`挂钩状态`有两种方式,第一种方式则是类似于`《驱动开发:摘除InlineHook内核钩子》`文章中所演示的通过读取函数的前16个字节与`原始字节`做对比来判断挂钩状态,另一种方式则是通过对比函数的`当前地址`
MiniFilter 微过滤驱动是相对于`SFilter`传统过滤驱动而言的,传统文件过滤驱动相对来说较为复杂,且接口不清晰并不符合快速开发的需求,为了解决复杂的开发问题,微过滤驱动就此诞生,微过滤驱动在编写时更简单,多数`IRP`操作都由过滤管理器`(FilterManager或Fltmgr)`所接管,因为有了兼容层,所以在开发中不需要考虑底层`IRP`如何派发,更无需要考虑兼容性问题,用户只需
在之前的文章中,我们实现了一个正向的匿名管道`ShellCode`后门,为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能,此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用,接下来将实现通过PEB获取`GetProcAddrees`函数地址,并根据该函数实现所需其他函数的地址自定位功能,通过枚举内存导出表的方式自动实现定位所需函数的动态地址,从而实现后门的通用性。
通常情况下计算除法会使用`div/idiv`这两条指令,该指令分别用于计算无符号和有符号除法运算,但除法运算所需要耗费的时间非常多,大概需要比乘法运算多消耗10倍的CPU时钟,在Debug模式下,除法运算不会被优化,但Release模式下,除法运算指令会被特定的算法经过优化后转化为为乘法,这样就可以提高除法运算的效率。
在开始使用`TEB/PEB`获取进程或线程ID之前,我想有必要解释一下这两个名词,PEB指的是进程环境块`(Process Environment Block)`,用于存储进程状态信息和进程所需的各种数据。每个进程都有一个对应的`PEB`结构体。TEB指的是线程环境块`(Thread Environment Block)`,用于存储线程状态信息和线程所需的各种数据。每个线程同样都有一个对应的`TE
在进行驱动开发之前,您需要先安装适当的开发环境和工具。首先,您需要安装`Windows`驱动开发工具包(WDK),这是一组驱动开发所需的工具、库、示例和文档。然后,您需要安装`Visual Studio`开发环境,以便编写和调试驱动程序。在安装WDK和`Visual Studio`之后,您还需要配置适当的项目设置,以便能够正确编译和构建驱动程序。