内核cortex-m cortex

3.6 Windows驱动开发:内核进程汇编与反汇编

在笔者上一篇文章`《内核MDL读写进程内存》`简单介绍了如何通过MDL映射的方式实现进程读写操作,本章将通过如上案例实现远程进程反汇编功能,此类功能也是ARK工具中最常见的功能之一,通常此类功能的实现分为两部分,内核部分只负责读写字节集,应用层部分则配合反汇编引擎对字节集进行解码,此处我们将运用`c... ......
内核 进程 Windows 3.6

OpenWRT/iStoreOS 不重头编译内核安装4G LTE网卡 Quectel EM05-CE记录

我的机器是x86装了iStoreOS,有4G网卡Quectel EM05 https://www.quectel.com/cn/product/lte-em05 主要参考资料如下 https://www.youtube.com/watch?v=DRddwfZ_TBY https://openwrt. ......
重头 内核 网卡 iStoreOS OpenWRT

3.5 Windows驱动开发:应用层与内核层内存映射

在上一篇博文`《内核通过PEB得到进程参数》`中我们通过使用`KeStackAttachProcess`附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我们将实现一个更加有趣的功能,在某些情况下应用层与内核层需要共享一片内存区域通过这片区域可打通内核与应用层的隔离... ......
应用层 内核 内存 Windows 3.5

3.1 Windows驱动开发:内核远程堆分配与销毁

在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了`ZwAllocateVirtualMemory`这个函数用于专门分配虚拟空间,而与之相对应的则是`ZwFreeVirtualMemory`此函数则... ......
内核 Windows 3.1

3.3 Windows驱动开发:内核MDL读写进程内存

MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进程的物理内存映射到当前进程的虚拟地址空间中,然后才能进行内存读写操作。 ......
内核 进程 内存 Windows 3.3

2.3 Windows驱动开发:内核字符串转换方法

在内核编程中字符串有两种格式`ANSI_STRING`与`UNICODE_STRING`,这两种格式是微软推出的安全版本的字符串结构体,也是微软推荐使用的格式,通常情况下`ANSI_STRING`代表的类型是`char *`也就是`ANSI`多字节模式的字符串,而`UNICODE_STRING`则代... ......
字符串 内核 字符 Windows 方法

2.4 Windows驱动开发:内核字符串拷贝与比较

在上一篇文章`《内核字符串转换方法》`中简单介绍了内核是如何使用字符串以及字符串之间的转换方法,本章将继续探索字符串的拷贝与比较,与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数,字符串的拷贝往往伴随有内核内存分配,我们将首先简单介绍内核如何分配堆空间,然后再以此为契机简介字符串的拷贝... ......
字符串 内核 拷贝 字符 Windows

2.2 Windows驱动开发:内核自旋锁结构

提到自旋锁那就必须要说链表,在上一篇`《内核中的链表与结构体》`文章中简单实用链表结构来存储进程信息列表,相信读者应该已经理解了内核链表的基本使用,本篇文章将讲解自旋锁的简单应用,自旋锁是为了解决内核链表读写时存在线程同步问题,解决多线程同步问题必须要用锁,通常使用自旋锁,自旋锁是内核中提供的一种高... ......
内核 Windows 结构 2.2

2.1 Windows驱动开发:内核链表与结构体

在`Windows`内核中,为了实现高效的数据结构操作,通常会使用链表和结构体相结合的方式进行数据存储和操作。内核提供了一个专门用于链表操作的数据结构`LIST_ENTRY`,可以用来描述一个链表中的每一个节点。使用链表来存储结构体时,需要在结构体中嵌入一个`LIST_ENTRY`类型的成员变量,用... ......
内核 Windows 结构 2.1

一个操作系统的设计与实现——第5章 加载内核

一直以来,我们都在使用汇编语言对MBR编程,但对于操作系统这样的复杂程序来说,使用汇编语言是比较困难的。本章将实现操作系统内核的加载与进入。 5.1 读硬盘的实现原理 操作系统存储于硬盘中,现在需要将其读出至内存。想要读硬盘,就需要依次进行以下操作: 设定读取的扇区数 设定起始扇区号 发送读硬盘命令 ......
内核 系统

一个操作系统的设计与实现——第10章 任务(一):共享内核

一直以来,我们的操作系统在启动后,运行的都是Kernel.c中的main函数。只运行这一个函数是不够的,操作系统应当有能力加载并运行其他程序。 从本章开始,将使用四章的篇幅讨论操作系统如何加载并运行任务。这里的任务(Task)与进程(Process)是同义词,在操作系统领域中,任务这个词更为常用,请 ......
内核 任务 系统

CentOS 7编译Linux内核(6.5.7)详细步骤

CentOS 7编译Linux内核(6.5.7)详细步骤 参考链接: 下载解压部分参考:Linux 内核动手编译实用指南 - LinuxEden 比较详细,可用于了解原理,但没有给出针对CentOS 7的方案(实验室用到的openEuler基于CentOS,所以需要CentOS的方案)。 配置编译安 ......
内核 步骤 CentOS Linux

Linux 内核 6.6 版本莅临,带来诸多变化

导读 笔记本的支持得到了提升,服务器性能得到了改进,更多内容一一揭晓。 又到了迎接 Linux 内核新版本发布的时刻! Linux 内核 6.6 的发布,是一次大规模更新,针对各类笔记本、网络硬件、处理器等提供了大量全方位的改良。 Linus Torvalds 表示: 各种各样的修复散布各处,除了针 ......
内核 版本 Linux 6.6

linux内核 快速分片,技术|Linux slabtop命令——显示内核片缓存信息

Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。 1.命令用法: 该命令用起来很简单,默认执行时 ......
内核 缓存 命令 slabtop linux

Dalvik虚拟机是在Linux内核上面运行的吗?为什么能执行安卓APK程序?

Dalvik虚拟机确实是在Linux内核之上运行的。它是安卓系统的关键组件,专门设计来执行APK文件中的代码。这里是它的工作原理和一个生活中的例子: 工作原理: 基于Linux内核: 安卓系统基于Linux内核,这为安卓设备提供了底层功能,如硬件抽象、网络通信、安全机制等。 Dalvik虚拟机: 在 ......
内核 程序 Dalvik Linux 是在

安卓系统的内核是Linux,但是它为什么能运行APK程序

安卓系统虽然基于Linux内核,但是它并不直接运行Linux的二进制程序。安卓为其设备提供了一个特殊的运行环境,这个环境包括了一个叫做Dalvik虚拟机(在Android 4.4及以后版本中被ART替代)的组件,它能够运行专门为安卓设计的APK文件中的程序。 这里有一个生活中的比喻: 想象Linux ......
内核 程序 系统 Linux APK

os:ubuntu -- 删除“旧内核”

os:ubuntu -- 删除“旧内核” 一、ubuntu删除旧内核: 1、查询内核信息: 1 [wit@on:null]$ dpkg --get-selections | grep linux 2、删除旧内核: 3、删除信息“deinstall”: 1 [wit@on:null]$ dpkg -- ......
内核 ubuntu

RHEL7系统管理之内核管理

1 Kdump工具 Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核, 由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用。 本文默认AMD或INTEL X86_64架构, RHEL7系统环境. 1.1 内核管理工具Kdump安装 Kdump是 ......
内核 系统 RHEL7 RHEL

crash —— 查看进程的内核栈的内容

有时我们有这样的需求,想查看某个进程的内核栈里的全部内容,介绍下面的几种做法: 方法1:得到进程的栈底地址以及栈大小,然后使用rd指令读取 使用mach指令获取内核栈的大小 crash> mach | grep SIZE MEMORY SIZE: 64 GB PAGE SIZE: 4096 KERN ......
内核 进程 内容 crash

内核System.map

内核System.map是一个文本文件,记录了操作系统内核中各个函数和变量的地址信息。它是通过编译和链接操作系统内核时生成的。 System.map文件对于内核调试非常有用,因为它可以提供内核中各个函数和变量的地址。当在内核发生崩溃或者调试时,可以通过System.map文件来定位问题所在的函数或变 ......
内核 System map

内核softlockup和hardlockup的一些参数分析【转】

转自:https://www.cnblogs.com/liuhailong0112/p/17619657.html 一 参数配置 Softlockup和hardlockup作为内核中的"lockup-看门狗"可以检查系统中调度和中断是否正常运转,其原理可以参考lockup-watchdogs。这两种 ......
内核 softlockup hardlockup 参数

系统编程:控制文件I/O的内核缓冲之sync(),fsync()和fdatasync()

本文主要介绍了如何同步IO完成的语义和刷新文件IO内核缓冲区的三个系统调用:sync()、fsync()和fdatasync()。 ......
内核 fdatasync 文件 系统 fsync

飞腾派使用内核态编程完成LED20控制操作

1 基础知识 在该程序设计过程中我们首先需要学习如何在内核态编程。 1.1 内核态编程 在内核态中编写C语言程序和在用户态中编写C语言程序不同,在用户态中编写C语言程序,我们可以使用libc库,通过系统调用访问内核态的相关操作。 基础的内核态程序如下: #include<linux/init.h> ......
内核 LED 20

生成内核patch时,Fixes字段如何生成?

参考 https://www.kernel.org/doc/html/latest/process/submitting-patches.html https://git-scm.com/docs/pretty-formats 如下所示: 做法 配置git [core] abbrev = 12 [p ......
字段 内核 patch Fixes

CentOS7 以rpm包方式升级内核

RPM包方式安装后,查看内核启动序号:[root@localhost ~] awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfgCentOS Linux (4.4.179-1.el7.elrepo.x86_64) 7 (Core)CentOS L ......
内核 CentOS7 方式 CentOS rpm

基于32位Cortex™-M4的STM32F446RET7、STM32F429IGH6、STM32F423VHH6嵌入式微控制器(MCU)

描述 STM32F4 32位Cortex™-M4 微控制器(MCU)打开了进入数字信号控制器(DSC)市场的大门。这一系列器件与 STM32F2 系列引脚对引脚、软件相容,但是具有更好的性能、DSP 性能、更多的 SRAM,并改进了外设,如全双工 I²S、低于 1μA 的 RTC、2.4MSPS 的 ......
32F STM 控制器 32 Cortex

centos7.9离线内核升级内核

一、centos7离线升级系统内核 1,centos7系类内核版本为3.10 centos6系列内核版本为2.6,我这边操作是基于centos7.9内核进行小版本的离线升级,在线的就不在这多说了。 内核版本3.10.0-1160.el7.x86_64升级为—— 3.10.0-1160.95.1.el ......
内核 centos7 centos

Linux内核中的两种ID分配方式

参考 https://www.kernel.org/doc/html/latest/core-api/idr.html 正文 在写内核代码时,可能会需要给数据结构分配一个唯一的ID的需求,具体是下面两种需求: 给结构体A分配一个全局唯一的ID,但是不需要根据ID找到结构体A的地址的用法 不但需要给结 ......
内核 方式 Linux

Grub2 内核启动参数总结

Grub2 内核启动参数总结 部分参数 biosdevname=0 net.ifnames=0 # 注意这个配置会修改网卡的名字, 比如之前是ens192 # 添加如上两个内容后就会变成 eth0 类似于CentOS6的命令特点. # 注意修改了网卡名称会导致机器无法上网, 需要通过控制台连接机器, ......
内核 参数 Grub2 Grub

linux内核通信

符号导出 EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。 2. 使用方法 加入B中调用A中导出函数 [1] 在模块A中c文件或者头文件中使用EXPORT_SYMBOL(xxxx) 导出函数. 有些需要添加 ......
内核 linux