草庐IT

Linux自学指南-从应用到内核

0.前言国内很多大学操作系统课存在两个问题1.重理论而轻实践,学起来很枯燥乏味,有些知识太过抽象难以理解。2.或者实践与预备理论脱节。很多学校的实践直接开始动手改内核,然而学生缺乏一些必要工具使用基础和相关理论知识,甚至很多学生是学操作系统之前并无接触过linux,要么实验肝的头痛。短时间内需要学习大量工具和知识。如linux命令、gdb、汇编语言等。故本人制作了linux自学路线。推荐资料原则以尽量一个为主,其他为辅。1.linux自学路线2.预备条件熟练使用C语言自行搭建开发环境,推荐:vscode+wsl3.linux基本命令在学习使用linux时候可以不安装图形界面。即使你安装了,其实

驱动开发:内核文件读写系列函数

在应用层下的文件操作只需要调用微软应用层下的API函数及C库标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头即可在内核中使用,例如本章要讲解的文件与目录操作相关函数,多数ARK反内核工具都具有对文件的管理功能,实现对文件或目录的基本操作功能也是非常有必要的。首先无论在内核态还是在用户态,我们调用的文件操作函数其最终都会转换为一个IRP请求,并发送到文件系统驱动上的IRP_MJ_READ派遣函数里面,这个读写流程大体上可分为如下四步;对于FAT32分区会默认分发到FASTFAT.SYS,而相对于NTFS分

详解驱动开发中内核PE结构VA与FOA转换

摘要:本文将探索内核中解析PE文件的相关内容。本文分享自华为云社区《驱动开发:内核PE结构VA与FOA转换》,作者:LyShark。本章将探索内核中解析PE文件的相关内容,PE文件中FOA与VA、RVA之间的转换也是很重要的,所谓的FOA是文件中的地址,VA则是内存装入后的虚拟地址,RVA是内存基址与当前地址的相对偏移,本章还是需要用到封装的KernelMapFile()映射函数,在映射后对其PE格式进行相应的解析,并实现转换函数。首先先来演示一下内存VA地址与FOA地址互相转换的方式,通过使用WinHEX打开一个二进制文件,打开后我们只需要关注如下蓝色注释为映像建议装入基址,黄色注释为映像装

驱动开发:内核封装WFP防火墙入门

WFP框架是微软推出来替代TDIHOOK传输层驱动接口网络通信的方案,其默认被设计为分层结构,该框架分别提供了用户态与内核态相同的AIP函数,在两种模式下均可以开发防火墙产品,以下代码我实现了一个简单的驱动过滤防火墙。WFP框架分为两大层次模块,用户态基础过滤引擎BFE(BaseFilteringEngine),以及内核态过滤引擎KMFE(KMFilteringEngine),基础过滤引擎对上提供C语言调用方式的API以及RPC接口,这些接口都被封装在FWPUCLNT.dll模块中,开发时可以调用该模块中的导出函数.WFP程序工作流程:使用FwpmEngineOpen()开启WFP引擎,获得W

MPU:鸿蒙轻内核的任务栈的溢出检察官

摘要:MPU(MemoryProtectionUnit,内存保护单元)把内存映射为一系列内存区域,定义这些内存区域的维洲,大小,访问权限和内存熟悉信息。本文分享自华为云社区《鸿蒙轻内核M核源码分析系列十六MPU内存保护单元》,作者:zhushy。MPU(MemoryProtectionUnit,内存保护单元)把内存映射为一系列内存区域,定义这些内存区域的维洲,大小,访问权限和内存熟悉信息。MPU支持对每个内存区域进行独立的属性设置,允许内存区域重,可以导出内存属性。有关MPU的详细信息可以参考官方资料站点,比如对应Cortex-M3的文档位置为:https://developer.arm.co

鸿蒙轻内核源码分析:文件系统FatFS

摘要:本文为大家介绍FatFS文件系统结构体的结构体和全局变量,并分析FatFS文件操作接口。本文分享自华为云社区《鸿蒙轻内核M核源码分析系列二一03文件系统FatFS》,作者:zhushy。FAT文件系统是FileAllocationTable(文件配置表)的简称,主要包括DBR区、FAT区、DATA区三个区域。其中,FAT区各个表项记录存储设备中对应簇的信息,包括簇是否被使用、文件下一个簇的编号、是否文件结尾等。FAT文件系统有FAT12、FAT16、FAT32等多种格式,其中,12、16、32表示对应格式中FAT表项的比特数。FAT文件系统支持多种介质,特别在可移动存储介质(U盘、SD卡

v74.01 鸿蒙内核源码分析(控制台) | 一个让很多人模糊的概念 | 百篇博客分析OpenHarmony源码

百篇博客分析.本篇为:(控制台篇)|一个让很多人模糊的概念文件系统相关篇为:v62.02鸿蒙内核源码分析(文件概念)|为什么说一切皆是文件v63.04鸿蒙内核源码分析(文件系统)|用图书管理说文件系统v64.06鸿蒙内核源码分析(索引节点)|谁是文件系统最重要的概念v65.05鸿蒙内核源码分析(挂载目录)|为何文件系统需要挂载v66.07鸿蒙内核源码分析(根文件系统)|谁先挂到/谁就是根总v67.03鸿蒙内核源码分析(字符设备)|绝大多数设备都是这类v68.02鸿蒙内核源码分析(VFS)

驱动开发:内核扫描SSDT挂钩状态

在笔者上一篇文章《驱动开发:内核实现SSDT挂钩与摘钩》中介绍了如何对SSDT函数进行Hook挂钩与摘钩的,本章将继续实现一个新功能,如何检测SSDT函数是否挂钩,要实现检测挂钩状态有两种方式,第一种方式则是类似于《驱动开发:摘除InlineHook内核钩子》文章中所演示的通过读取函数的前16个字节与原始字节做对比来判断挂钩状态,另一种方式则是通过对比函数的当前地址与起源地址进行判断,为了提高检测准确性本章将采用两种方式混合检测。具体原理,通过解析内核文件PE结构找到导出表,依次计算出每一个内核函数的RVA相对偏移,通过与内核模块基址相加此相对偏移得到函数的原始地址,然后再动态获取函数当前地址

v73.02 鸿蒙内核源码分析(参考手册) | 阅读内核源码必备工具 | 百篇博客分析OpenHarmony源码

百篇博客分析.本篇为:(参考手册篇)|阅读内核源码必备工具前因后果相关篇为:v08.03鸿蒙内核源码分析(总目录)|百万汉字注解百篇博客分析v09.04鸿蒙内核源码分析(调度故事)|用故事说内核调度v10.03鸿蒙内核源码分析(内存主奴)|皇上和奴才如何相处v13.05鸿蒙内核源码分析(源码注释)|每天死磕一点点v18.02鸿蒙内核源码分析(源码结构)|内核文件各自含义v52.05鸿蒙内核源码分析(静态站点)|码农都不爱写注释和文档v73.01鸿蒙内核源码分析(参考文档)|阅读内核源

【全志T113-S3_100ask】15-1 内核5.4驱动spi屏幕——ILI9341

【全志T113-S3_100ask】15-1内核5.4驱动spi屏幕——ILI9341背景(一)spi设备树1、修改设备树2、完善设备树(二)使能内核(三)兼容性修改(四)测试背景本来想直接驱动mipi屏幕的,但是发现有一点点难度,所以想先研究一下小屏幕如何驱动。本文章使用的芯片为全志T113-s3,目前使用的核心板是100ask的,但是官方开发板上面的spi接口不齐全,所以自制了一块板子进一步学习。(一)spi设备树1、修改设备树在原本的设备树中,配置是错误的,引脚都对不上,应该是参考D1-H的文档,然后拷贝过来的。然后看了芯片的手册,引脚配置如下:在Function4中有spi1相关的配置