004内核编程学习笔记
《STM32Cube高效开发教程》笔记

《STM32Cube高效开发教程》读书笔记目录一、前言 (2)1.1 书籍简介 (3)1.2 编写目的 (4)二、STM32Cube概述 (5)2.1 STM32Cube的意义 (6)2.2 STM32Cube的主要特点 (7)三、安装与配置 (9)3.1 STM32Cube的安装 (10)3.2 开发环境的配置 (11)四、创建项目 (12)4.1 新建项目 (13)4.2 项目设置 (14)五、HAL库介绍 (15)5.1 HAL库简介 (16)5.2 HAL库的主要组件 (18)六、STM32最小系统 (19)6.1 STM32最小系统的组成 (21)6.2 STM32最小系统的应用 (22)七、GPIO操作 (24)7.1 GPIO的基本概念 (25)7.2 GPIO的操作方法 (26)八、中断系统 (28)8.1 中断的基本概念 (29)8.2 中断的处理过程 (31)九、定时器 (33)9.1 定时器的功能介绍 (34)9.2 定时器的操作方法 (36)十五、文件系统 (37)一、前言随着科技的飞速发展,嵌入式系统已广泛应用于我们生活的方方面面,从智能手机到自动驾驶汽车,其重要性不言而喻。
而STM32作为一款广泛应用的微控制器系列,以其高性能、低功耗和丰富的外设资源赢得了广大开发者的青睐。
为了帮助开发者更好地掌握STM32系列微控制器的开发技巧,提升开发效率,我们特别推出了《STM32Cube 高效开发教程》。
本书以STM32Cube为核心,通过生动的实例和详细的讲解,全面介绍了STM32系列微控制器的开发过程。
无论是初学者还是有一定基础的开发者,都能从中找到适合自己的学习内容。
通过本书的学习,读者将能够更加深入地理解STM32的内部结构和工作原理,掌握其编程方法和调试技巧,从而更加高效地进行嵌入式系统的开发和应用。
在科技日新月异的今天,STM32系列微控制器将继续扮演着举足轻重的角色。
C#高级编程《第7版》读书笔记(1-3章)

本文档是学习《C#高级编程》第七版的读书笔记,对于一些资源参考了网络相关文章。
本文档仅供个人学习,不可用于商业行为。
第Ⅰ部分部分 C#C#语言语言语言第一章第一章 .NET 体系结构1. 什么是 .NET Framework?2. C#语言和 .NET Framework 关系是什么?3. 什么是公共语言运行库?4. 什么是托管代码? 其与非托管代码有什么不同? 他们执行效率如何?5. IL 是什么?6. 什么是程序集?7. 值类型和引用类型的区别?答1:.NET Framework 是用于Windows 的新托管代码编程模型。
.NET Framework 又称 .Net 框架。
一个致力于敏捷软件开发(Agile software development Agile software developmentAgile software development)、快速应用开发(Rapid Rapid application developmentapplication development)、平台无关性和网络透明化的软件开发平台。
.NET 框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime Common Language Runtime Common Language Runtime)为基础,支持多种语言(C#、VB、C++、Python 等)的开发。
答2:C#本身只是一种语言,尽管它是用于生成面向.NET 环境的代码,但它本身不是.net 的一部分。
.net 支持的一些特性,C#并不支持。
而C#语言支持的另一些特性,.net 却不支持。
但C#语言是和.NET 一起使用的,所以如果要使用C#高效地开发应用程序,理解Framework 就非常重要。
答3:.NET Framework 的核心是其运行库的执行环境, 称为公共语言运行库公共语言运行库 (CLR) 或 .NET 运行库。
《谭浩强《C程序设计》(第4版)笔记和课后习题详解》读书笔记模板

第11章常见错误分 析
1.1复习笔记 1.2课后习题详解
2.1复习笔记 2.2课后习题详解
3.1复习笔记 3.2课后习题详解
4.1复习笔记 4.2课后习题详解
5.1复习笔记 5.2课后习题详解
6.1复习笔记 6.2课后习题详解
7.1复习笔记 7.2课后习题详解
8.1复习笔记 8.2课后习题详解
作者介绍
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,暂无该书作者的介绍。
谢谢观看
目录分析
第2章算法——程 序的灵魂
第1章程序设计和C 语言
第3章最简单的C程 序设计——顺序程
序设计
1
第4章选择结构 程序设计
2
第5章循环结构 程序设计
3
第6章利用数组 处理批量数据
4 第7章用函数实
现模块化程序 设计
5
第8章善于利用 指针
第10章对文件的输 入输出
第9章用户自己建 立数据类型
9.1复习笔记 9.2课后习题详解
10.1复习笔记 10.2课后习题详解
11.1复习笔记 11.2课后习题详解
读书笔记
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的心得。
精彩摘录
这是《谭浩强《C程序设计》(第4版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的精彩内容 摘录。
谭浩强《C程序设计》(第4版)笔记 和课后习题详解
读书笔记模板
01 思维导图
03 目录分析 05 精彩摘录
目录
02 内容摘要 04 读书笔记 06 作者介绍
思维导图
本书关键字分析思维导图
习题
计算机组成原理黑皮书笔记

计算机组成原理黑皮书笔记计算机组成原理是计算机科学与技术专业的核心课程之一,是理解计算机硬件工作原理和体系结构的基础。
黑皮书系列是该领域最经典、权威的教材之一,对于学习和理解计算机组成原理具有重要的参考价值。
第一章:引言计算机组成原理是研究计算机硬件系统的基本原理和方法,是计算机科学与技术的核心领域。
它是从硬件角度探讨计算机的结构、功能、性能和工作方式等问题,为软件开发提供了重要的指导。
黑皮书笔记旨在帮助读者深入理解计算机组成原理的核心概念和原则,以及其中涉及的各种技术和工程实践。
第二章:数字逻辑电路数字逻辑电路是计算机硬件的基础组成部分,负责完成数据的存储、传输、处理和控制。
其中包括布尔逻辑、数字信号和逻辑门电路等内容。
通过学习这一章节,我们能够了解到计算机中各种数字组件的工作原理和相互连接方式。
第三章:指令系统与汇编语言指令系统与汇编语言是计算机中实现软件和硬件交互的桥梁。
指令系统规定了计算机能够执行的指令集合,而汇编语言是一种底层的程序设计语言,用于编写与硬件直接交互的程序。
本章节将介绍指令系统的设计原则和汇编语言的基本语法。
第四章:中央处理器中央处理器(CPU)是计算机的核心组件,负责执行指令、进行数据处理和控制系统的运行。
在这一章节中,我们将深入了解CPU的组成结构和工作原理,包括指令周期、流水线技术、缓存等重要概念。
第五章:存储器和存储系统存储器是计算机中用于存储数据和程序的设备,包括主存储器和辅助存储器。
本章将介绍存储器的层次结构、存储技术和存储系统的设计原则,帮助读者理解计算机内存的组织和管理方式。
第六章:输入输出系统输入输出系统是计算机与外部设备进行信息交互的通道,包括输入设备和输出设备。
本章将介绍输入输出系统的工作原理、接口标准和通信方式,帮助读者理解计算机与外设之间的数据传输和控制方式。
第七章:计算机总线计算机总线是各个硬件组件之间进行数据传输和控制的纽带。
本章将介绍总线的类型、结构和工作原理,以及总线的性能和扩展技术。
Posix 多线程编程学习笔记(六)—共享内存(1)

off是要映射字节在文件中的起始偏移量。
通常将其设置为0。
prot参数说明对映射存储区的保护要求。
可将prot参数指定为PROT_NONE,或者是PROT_READ(映射区可读),PROT_WRITE(映射区可写),PROT_EXEC(映射区可执行)任意组合的按位或,也可以是PROT_NONE(映射区不可访问)。
对指定映射存储区的保护要求不能超过文件open模式访问权限。
flag参数影响映射区的多种属性:MAP_FIXED返回值必须等于addr.因为这不利于可移植性,所以不鼓励使用此标志。
MAP_SHARED这一标志说明了本进程对映射区所进行的存储操作的配置。
此标志指定存储操作修改映射文件。
MAP_PRIVATE本标志导致对映射区建立一个该映射文件的一个私有副本。
所有后来对该映射区的引用都是引用该副本,而不是原始文件。
要注意的是必须指定MAP_FIXED或MAP_PRIVATE标志其中的一个,指定前者是对存储映射文件本身的一个操作,而后者是对其副本进行操作。
mmap成功返回后,fd参数可以关闭。
该操作对于由mmap建立的映射关系没有影响。
为从某个进程的地址空间删除一个映射关系,我们调用munmap.2.名称::munmap功能:解除存储映射头文件:#include<sys/mman.h>函数原形:int munmap(caddr_t addr,size_t len);参数:addr指向映射存储区的起始地址len映射的字节返回值:若成功则返回0,若出错则返回-1其中addr参数是由mmap返回的地址,len是映射区的大小。
再次访问这些地址导致向调用进程产生一个SIGSEGV信号。
如果被映射区是使用MAP_PRIVATE标志映射的,那么调用进程对它所作的变动都被丢弃掉。
内核的虚存算法保持内存映射文件(一般在硬盘上)与内存映射区(在内存中)的同步(前提它是MAP_SHARED内存区)。
这就是说,如果我们修改了内存映射到某个文件的内存区中某个位置的内容,那么内核将在稍后某个时刻相应地更新文件。
哈工大操作系统读书笔记

哈工大操作系统读书笔记在哈尔滨工业大学的计算机科学与技术专业的学习中,操作系统是我们学科的核心课程之一。
为了更好地掌握操作系统的基本原理和技术,我认真阅读了相关教材,并做了一些笔记。
一、操作系统的基本概念1. 操作系统定义:操作系统是控制计算机硬件和软件资源,管理用户程序运行,提供用户界面和应用程序开发环境的一种系统软件。
2. 操作系统功能:主要功能包括处理机管理、存储管理、文件管理、设备管理以及用户界面。
二、处理机管理1. 进程的定义:进程是程序的一次执行,是系统进行资源分配和调度的基本单位。
2. 进程的状态:包括新建、就绪、运行和阻塞四种状态。
3. 进程控制块PCB:用于描述进程的基本信息和运行状态。
4. 进程调度算法:包括先来先服务、最短作业优先、最短剩余时间优先等。
三、存储管理1. 内存分配方式:包括固定分区、可变分区、分页和分段。
2. 内存置换算法:包括先进先出、最近最少使用、最佳置换算法等。
3. 虚拟内存的概念:通过将内存和外存统一管理,为用户提供一个比实际内存大得多的虚拟内存空间。
四、文件管理1. 文件系统的概念:文件系统是操作系统中负责管理和存储文件信息的软件部分。
2. 文件的分类:按性质分为系统文件和用户文件;按内容分为文本文件和二进制文件;按存储方式分为顺序文件和随机文件。
3. 文件的访问方式:包括顺序访问和随机访问。
五、设备管理1. 设备驱动程序的概念:设备驱动程序是操作系统与硬件设备交互的接口,负责设备的初始化和释放、设备的读写操作以及设备的状态查询等。
2. 缓冲技术的概念:缓冲技术是解决I/O设备速度与CPU速度不匹配问题的一种方法,通过在内存中开辟一块缓冲区,暂时存放输入输出数据,以实现数据的同步传输。
3. 设备分配与回收:设备分配的主要任务是确定哪些进程可以使用哪些设备,并满足设备的互斥使用和独立性等约束条件;设备回收的任务是在进程终止时,将设备的使用权收回并重新分配给其他进程使用。
鸟哥的linux私房菜(基础篇)学习笔记

鸟哥的linux私房菜(基础篇)学习笔记鸟哥的linux私房菜(基础篇)是一本非常好的Linux入门教材,它全面介绍了Linux 的基础知识,包括Linux的安装、文件系统、用户管理、进程管理、磁盘管理、文件编辑器、Shell编程以及Linux网络等方面。
本文将简单介绍一些我学习这本书时的笔记和心得,以期为Linux新手提供一些帮助。
1. 操作系统和内核操作系统是由内核和外壳组成的,内核是操作系统最基础的组成部分,它负责处理硬件和软件的交互,包括驱动程序、内存管理、进程管理和文件系统等。
而外壳则是用户和操作系统进行交互的界面,我们可以通过命令行或者图形化界面与系统进行交互。
2.文件系统在Linux系统中,所有资料都以文件的形式保存在文件系统中,文件系统采用树形结构。
在Linux中,根目录是"/",其他目录都是在根目录下面的子目录。
我们可以使用ls 命令来查看文件目录和文件,也可以使用cd命令来进入和退出目录,另外,文件名是区分大小写的。
3.用户管理在Linux中,每个用户都有自己的ID号、用户名和密码。
通过用户管理,我们可以添加、删除或修改用户,另外,我们可以通过权限控制来限制普通用户访问系统的某些文件或命令,使系统更安全。
4.进程管理在Linux中,每个程序都是一个进程,我们可以使用ps命令查看系统中运行的进程,也可以使用kill命令来终止特定的进程。
另外,我们可以使用top命令来查看系统中当前占用CPU资源最多的进程,以便优化系统性能。
5.磁盘管理Linux系统中的磁盘分为硬盘和分区,我们可以使用fdisk命令来分区,也可以使用mkfs命令来格式化分区,以便在系统中进行挂载。
另外,我们可以使用df命令来查看文件系统的使用情况,以便合理管理磁盘空间。
6.文件编辑器在Linux中,有很多种文件编辑器,如vi、vim、nano等。
其中,vi是最常用的编辑器,而vim是vi的增强版,它提供了更多的功能和快捷键。
寒江独钓:Windows内核安全编程

读书笔记模板
01 思维导图
03 读书笔记 05 作者介绍
目录
02 内容摘要 04 目录分析 06 精彩摘录
思维导图
关键字分析思维导图
寒江
计算机
函数
程序员
编程
内核
实现
内核
网络
编程 第章
驱动
编程
过滤
应用
文件系统
设备
框架
内核
内容摘要
本书从Windows内核编程出发,全面介绍串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编 程技术,以及基于这些技术的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙的具体实现。对于驱动编 程模型的选择,本书同时兼顾WDM与WDF。本书适合大专院校计算机系的学生、计算机编程爱好者、普通Windows 程序员、Windows内核程序员、信息安全行业的程序员使用。阅读本书,需要读者有C语言、数据结构、操作系统 和计算机网络的基础知识。
7.2文件系统的分发 函数
7.3设备的绑定前期 工作
7.4文件系统控制设 备的绑定
7.5文件系统
1
卷设备的绑定
7.6读/写操作 2
的过滤
3 7.7其他操作
的过滤
4 7.8路径过滤
的实现
5 7.9把
sfilter编译 成静态库
8.2区分进程
8.1文件透明加密 的应用
8.3内存映射与文 件缓冲
1
8.4加密标识
2.6 WDK编程中的 特殊点
3.2获得实际数据
3.1过滤的概念
3.3完整的代码
4.1技术原理 4.2键盘过滤的框架
4.3键盘过滤的请求 处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对某某游戏的驱动双开的分析及其学习
目前网络游戏,由于外(和谐)挂盛行,在游戏中加了很多很多的防护校验,我们耳熟能详的有TP,NP,HS,xtrap,apex等,在游戏加载前都可以看到它们的身影。
作为一个初学内核驱动的菜鸟,看着高手们辗压各种驱动保护,心里真的是羡慕妒嫉恨啊。
不过,现在还是要打好基础为最重要。
先还是实现一个简单的驱动双开吧~
某游戏要实现双开,说难不难,说容易不容易,主要是有一条技术分界线,那就是ring0级的编程,如果总是考虑用户ring3层的东西,是永远实现不了的。
这也是为什么双开也可以成为了外(和谐)挂的一种特殊功能了(——)!
对于某游戏,在网上早就有双开的工具了,下载下来逆向分析一下,也比较简单,整个双开的流程分为2步(本人的角度):
第一步:加载驱动,SSDT hook NtCreateMutant
某双开工具的hook后NtCreateMutant:
mov edi, edi
push ebp
mov ebp, esp
push dword ptr [ebp+14]
push dword ptr [ebp+10]
push dword ptr [ebp+C]
push dword ptr [ebp+8]
call dword ptr [<&ntkrnlpa.NtCreateMutant>] //想想这里为什么还要call真实地址
xor eax, eax //注意这里,注意这里
pop ebp
retn 10
这个配合NtCreateMutant 的函数原型很容易看出来,原型如下
//NtCreateMutant 创建一个突变的对象,称为互斥在用户模式.
NTSYSAPI
NTSTATUS
NTAPI
NtCreateMutant( OUT PHANDLE MutantHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN BOOLEAN InitialOwner);
第二步:这就是ring3层的了
IsWindow()
FindWindow()
ShowWindow()
SetParent()
诸如此类的方法使得窗口隐藏
流程是这样的,先启动一个游戏,让后加载驱动,并做好ring3 层的隐藏,再启动一个游戏,然后恢复第一个游戏。
既然NtCreateMutant 都返回0 了,那就不是双开那么简单了,是无限开啊,只要保存好状态,不过某游戏占CPU惊人啊,所以一些商家也不好意思说能多开了,呵呵。