自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 资源 (4)
  • 收藏
  • 关注

翻译 (CVE-2022-276\66): Exploit esp6 modules linux 内核攻击-分析翻译

添加链接描述

2022-06-02 13:53:38 966

翻译 CVE-2021-22555利用过程翻译

原文链接:https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html本文基本属于翻译,原文解释的很清楚,我按自己的理解来记录下。漏洞位于netfilter。原作者利用此漏洞获得了两万美金的奖励。漏洞比较老,存在将近15年之久,从这个漏洞来看,内核其实类似的漏洞应该还有不少。今年貌似爆出了类似的漏洞 https://github.com/Bonfee/CVE-2022-0995 。今天又看到一个:htt

2022-03-30 16:19:54 1316

原创 tpm2_tss库使用例子

【代码】tpm2_tss库使用例子。

2025-04-08 19:28:46 71

原创 UEFI镜像结构布局

引导扇区:负责启动加载过程。UEFI 固件映像:包含固件的主体代码和数据。配置数据库:存储固件的配置信息。签名和验证数据:确保固件的完整性和合法性。备用区域:提供固件的备份副本,以防主副本损坏。详细描述结构图描述了一个典型的 UEFI 镜像在物理存储设备(如 SPI 闪存或硬盘)中的分层布局。1. 引导扇区(Boot Sector)作用:兼容传统 BIOS 启动模式,或作为 UEFI 启动的补充入口(例如从 MBR 磁盘启动)。内容。

2025-04-03 18:16:25 786

原创 kdump分配内存过程分析

控制页(Control Pages)是内核崩溃时加载第二个内核(crash kernel)所需的临时内存,用于管理内存复制、页表映射等关键操作。系统调用加载crash kernel时,此函数被触发。典型调用路径 kexec_load系统调用 kdump服务初始化。通过此函数可看出,内核在崩溃转储过程中对控制页的管理遵循。内存来源 普通内存池 预留crash内存区域。分配时机 动态分配 预分配+运行时锁定。可靠性要求 允许失败 必须保证可用性。原则,确保关键操作的内存安全。特性 常规分配 崩溃分配。

2025-03-27 16:23:53 794

原创 SEV内存加密位linux内核设置过程

其作用是为内存加密操作提供统一的入口,但实际功能由架构相关代码(如 AMD SVM)实现。,理解其工作原理有助于调试旧版本兼容性问题,但在新开发中应遵循 AMD 官方推荐使用。此时旧接口仍有效,但。:表示当前内核或硬件。

2025-03-21 11:57:10 391

原创 linux内核 kvm_mmu_page_fault 分析

此函数用于处理客户机(Guest)的页错误(Page Fault),是KVM内存管理单元(MMU)的核心逻辑之一。主要任务包括处理直接物理映射、MMIO访问、嵌套虚拟化错误和指令模拟。此函数是KVM处理客户机页错误的核心逻辑,涵盖从错误分类(MMIO、嵌套错误)到指令模拟的全流程,通过条件分支和硬件特性优化性能。

2025-03-20 11:46:40 444

原创 qemu ept设置过程

在基于 Intel VT-x 的虚拟化环境中,EPT(扩展页表)负责将。若有具体代码或场景需要深入分析,可进一步探讨!

2025-03-19 19:22:53 933

原创 qemu日志系统添加分析

使用-d my_log过滤LOG_MY_LOG日志的底层机制核心逻辑QEMU 通过名称映射和位掩码匹配实现-d my_log参数与LOG_MY_LOG日志的关联。通过-d my_log名称与位掩码的绑定(在中注册)位掩码唯一性(避免与内置日志冲突)正确调用(条件匹配)

2025-03-19 16:36:12 880

原创 QEMU 中 x86_cpu_realizefn 到 ept_emulation_fault 的调用流程解析(macos)

的流程,涵盖了 QEMU 中 x86 CPU 的初始化、vCPU 线程启动、客户机代码执行及内存虚拟化异常处理的核心路径。在 QEMU 的 x86 虚拟化实现中,CPU 的初始化与执行流程涉及多个关键函数,从 CPU 设备的最终初始化(方法,负责完成 CPU 的最终初始化(如设置 CPU 型号、检查特性兼容性、注册热插拔逻辑等)。为每个虚拟 CPU 创建执行线程,并绑定到加速器(如 HVF/KVM)的后端操作。)到虚拟机监控程序(HVF)中处理 EPT(扩展页表)缺页异常(是 x86 CPU 设备的。

2025-03-18 15:13:19 945

原创 kvm_emulate_hypercall代码解析()

Hypercall 是虚拟机(Guest)向宿主机(Host)请求特权操作的机制,类似于系统调用(但针对虚拟化场景)。是 KVM 实现 Hypercall 的核心分发逻辑,结合特权检查、模式适配和用户空间协作,为虚拟机提供了与宿主机交互的安全通道。是 KVM(Kernel-based Virtual Machine)中处理虚拟机发起的。

2025-03-17 19:10:42 856

原创 CSV加密代码分析

在支持内存加密的虚拟机迁移(如 AMD SEV、Intel TDX)场景中,ram_load负责将加密的内存数据安全地加载到目标虚拟机,并确保解密过程的完整性和机密性。ram_loadC-bitAES-128VMSAMK-TME在支持保密计算的虚拟机中,ram_loadVMPL如果需要分析具体硬件(如 SEV 或 TDX)的解密实现细节,可进一步说明目标平台。

2025-03-17 12:31:38 839

原创 qemu分析之 KVM_EXIT_MMIO

基于qemu-2.8.1这是QEMU内存子系统的核心函数,。

2025-03-13 20:44:35 614

原创 kvm 创建虚拟机核心分析

此函数为 vCPU 提供架构相关的初始化Guest 能正确感知硬件能力(通过 CPUID/MSR)。内存管理(MTRR/MMU)符合虚拟化需求。vCPU 状态处于可运行的标准初始状态。这是虚拟机正常启动和运行的基础设施保障。

2025-03-13 16:33:23 595

原创 KVM代码解析----kvm_init

kvm_init函数是KVM模块的核心初始化函数,负责初始化架构特定的功能、硬件设置、CPU兼容性检查、资源分配和设备注册等。通过这个函数,KVM模块能够正确地设置和运行虚拟化环境。函数是KVM模块的架构特定初始化函数,负责初始化x86架构相关的KVM功能。它检查硬件支持、分配资源、设置操作函数,并初始化核心功能模块。通过这个函数,KVM模块能够正确地设置和运行虚拟化环境。

2025-03-13 15:27:06 706

原创 线性规划原理

定义线性规划(Linear Programming, LP)是运筹学中用于解决最优化问题的一种数学方法。其核心是在一组线性约束条件下,寻找某个线性目标函数的最大值或最小值。这类问题广泛应用于资源分配、生产计划、运输调度等领域。

2025-03-12 10:55:12 812

原创 pci_assign_unassigned_bus_resources地址从新分配代码分析

该函数属于。

2025-03-11 16:41:41 237

原创 waydroid源码分析

这段代码是 Waydroid 项目的一部分,主要负责配置和管理 LXC 容器,以实现 Android 环境在 Linux 系统上的运行。LXC 容器配置:生成容器所需的设备节点、挂载点和系统属性。容器生命周期管理:启动、停止、冻结和解冻容器。硬件访问支持:配置图形设备、Binder 驱动和其他硬件节点。用户会话集成:动态挂载用户目录和通信套接字。Android 环境模拟:设置系统属性和环境变量,模拟 Android 运行环境。镜像获取与更新。

2025-03-07 17:07:47 915

原创 android系统启动过程

的实现,可以深入理解 Android 启动流程的控制逻辑,并为定制系统行为(如添加新服务、修改启动顺序)提供技术基础。:SystemServer 完成服务启动后发送 BOOT_COMPLETED 广播。是用户空间的第一个进程(PID=1),解析。:内核完成系统启动,初始化系统服务和驱动。触发器启动 Zygote 进程。创建子进程并执行二进制文件。执行early-init阶段。脚本,管理服务生命周期。执行late-init阶段。加载SELinux策略。内核启动init进程。进入无限循环处理事件。

2025-03-06 16:26:52 731

原创 vfio-pci 驱动代码分析

以下是针对中vfio-pci。

2025-03-06 10:58:42 1025

原创 IOMMU配置过程

函数位于。

2025-03-05 11:40:03 848

原创 linux内核中关于ip分组代码分析逻辑--基于5.4

原子操作:skb_list_del_init保证链表操作的原子性。通过dst_input()将报文传递给传输层(TCP/UDP等)使用list_for_each_entry_safe实现安全遍历。提升CPU缓存命中率(同一设备的报文往往有相似处理路径)安全遍历:使用_safe后缀的遍历宏防止链表断裂。通过IP_INC_STATS_BH更新内核计数器。调用ip_rcv_finish()完成最终处理。错误统计由ip_rcv_core内部完成。作用:执行IP层的通用接收处理。IP头校验(长度/校验和)

2025-02-27 20:07:34 279

原创 IO虚拟化相关原理

作用:每个 PCI Segment(总线组)对应一个 Root Table,用于索引设备所属的 Context Table。结构Root Table 是一个数组,每个条目(Root Entry)对应一个 PCI Bus 编号。每个 Root Entry 包含 Context Table 的基地址()和有效位(Present格式(简化):// Context Table 物理基地址// 条目是否有效作用。

2025-02-25 14:04:29 937

原创 transfmer学习认识

将得到的分数通过Softmax函数转换为概率分布,表示每个值向量相对于其他值向量的重要性。例如,q1与k1的分数为14,与k2的分数为12,经过Softmax处理后,得到的概率分别为0.88和0.12。这张图片展示了Transformer模型中的自注意力(Self-Attention)机制的一个计算示例,特别是如何计算注意力分数和应用Softmax函数来确定每个输入元素的重要性。将输出转换为概率分布:softmax 函数可以将一个向量的每个元素转换为一个介于 0 和 1 之间的值,并且所有元素的和为 1。

2025-02-19 11:40:22 753

原创 TCP 握手数据包分析

二、服务端数据分析:这里服务端发送的syn ack数据包的check 与客户端收到的syn ack数据包的check 不知道为什么不同。

2025-01-24 10:44:38 712

原创 磁盘文件系统问题排查

随着硬盘扇区大小从512字节增加到4096字节(即4K扇区),为了提高磁盘读写效率和减少磁盘空间浪费,文件系统的起始位置通常设置为4096字节的整数倍。性能优化:将超级块放在1024字节偏移处,可以为引导加载程序和分区表留出空间,同时确保文件系统的关键元数据(如超级块和组描述符)在磁盘上的分布是均匀的,这有助于提高文件系统的读写性能和可靠性。当文件系统的块大小设置为4096字节时,超级块(ext4_super_block)从偏移量1024字节(1个扇区)开始的原因主要是为了向后兼容和对齐。

2024-11-27 14:10:46 385

原创 grub 2.0安全启动校验镜像逻辑

在这个函数被调用时,如果你的验证器有一个 fini 函数,它也会被调用。读取文件:当你读取文件的内容时,GRUB 会调用你的验证器的 write 函数。这是通过 grub_file_read 函数完成的,它接受一个文件指针,一个缓冲区和一个大小作为参数。在 GNU GRUB 中,一旦你注册了你的验证器,它将自动用于所有打开的文件。打开文件:当你打开一个文件时,GRUB 会自动调用你的验证器。注册验证器:首先,你需要使用 grub_verifier_register 函数来注册你的验证器。

2024-03-21 20:48:50 463

原创 5.4.x内核模块密码算法调用逻辑分析

大致的逻辑应该是通过update 把硬件加速命令通过ccp_crypto_enqueue_request传递到硬件加速其中。如果处理完成直接返回正确,处理异常如果是设备忙碌,外部会通过crypto_wait_req等待,知道硬件加速器执行完毕唤醒wait。ccp_crypto_enqueue_request使用例子。

2024-03-13 15:45:26 510

原创 pcie设备驱动无法工作排查

为了查看为什么驱动匹配不到设备,我写了如下测试代码。当然必须重构部分数据结构,因为没有导出。整个驱动的注册后触发使能的过程如上。这里核心位于bus_for_each_dev。最后发现pci_dev->match_driver没有使能。

2024-01-16 12:00:07 845

原创 linux内核调度

当time_slice为0时,表示当前进程的时间片用完,调度器判断当前进程的类型,如果是交互式进程或者实时进程,则重置其时间片并重新插入active数组。当active数组中的所有进程都被移到expire数组中后,调度器交换active数组和expire数组。调度器为每一个CPU维护了两个进程队列数组:指向活动运行队列的active数组和指向过期运行队列的expire数组。楼梯算法能避免进程饥饿现象,高优先级的进程会最终和低优先级的进程竞争,使得低优先级进程最终获得执行机会。

2023-10-18 11:10:19 213

原创 块设备调用逻辑(linux 5.4)

【代码】块设备调用逻辑(linux 5.4)

2023-09-02 23:11:28 406

原创 ecryptfs透明加密

首先作者为了实现透明加密,构造了一个ecryptfs的文件系统。这个文件系统并没有对磁盘文件的直接组织,而是依附在已有的文件系统上,通过构建的文件系统对已有的文件系统做了重新组织实现。之后是磁盘管理和虚拟文件系统管理。这些都是依附与一个叫lowe_path的核心逻辑,就是未加密文件夹。通过对未加密文件夹重新组织,实现对未加密文件页缓存加密。透明加密一直是安全领域比较热门的领域,不过我了解了下内核自带的ecryptfs。正如常见的文件系统构成一样,ecrypt构建了自己的文件系统节点管理逻辑。

2023-07-21 11:23:42 1340 5

原创 edk2 security boot校验流程

其中Code\Build\AlderLakeIoTPkg\DEBUG_VS2017\X64\MdeModulePkg\Universal\SecurityStubDxe\SecurityStubDxe\DEBUG\AutoGen.c。所以结论是FileAuthentication 调用了DxeImageVerificationHandler / DxeTpm2MeasureBootHandler实现了镜像校验。这三段分别是注册安全句柄,获取安全句柄和使用安全句柄,所有的安全逻辑貌似都是从这里触发的。

2023-07-10 14:31:20 597

原创 IMA/EVM完整性检测代码分析

在IMA hook机制中,需要定义一系列回调函数,包括measure、appraise、policy、inode_free和post_parse等函数。measure函数用于在文件读取之前计算文件的哈希值;appraise函数用于评估文件完整性;policy函数用于读取并更新IMA策略;inode_free函数用于在删除文件时更新操作系统的IMA状态信息;post_parse函数用于在解析之后更新文件系统缓存和错误日志。int ret;

2023-06-01 20:20:15 3609 4

原创 通用算法总结

即通用公式为: f(n) = f(n-1) + f(n-2)一个整数n分解位k个乘积最大的整数 ( 从小整理的思路 )最大值m = max( i *(n - i),

2023-03-04 13:20:13 122

原创 avb校验相关与块校验原理

• 块设备的控制器传输的固定数据单元大小称为扇区(sector)。因此I/O调度器和块设备驱动必须以扇区为单位管理数据。• 虚拟文件系统、映射层(mapping layer)管理磁盘数据的逻辑单元大小称为块(block)。对于文件系统来说,块是最小的磁盘数据存储单元。• 前面在分散/聚合DMA中,我们提到块设备驱动应该能够处理称为“段”的数据单元;每个“段”是内存中的一页或页的一部分,“段”中的数据在磁盘上是连续的。• 磁盘缓冲区处理的数据单元大小为“页”,每个对应一个页帧。

2023-01-21 12:38:32 3369

原创 CVE-2022-34918漏洞流程图

漏洞流程

2022-09-01 14:24:46 714

原创 QEMU TCG研究

动态翻译的基本思想就是把每一条Target指令切分成为若干条微指令,每条微指令由一段简单的C代码来实现,运行时通过一个动态代码生成器把这些微指令组合成一个函数,最后执行这个函数,就相当于执行了一条Target指令。那么现在的CPU指令这么多,怎么知道要分为哪些微指令呢?其实CPU指令看似名目繁多,异常复杂,实际上多数指令不外乎以下几大类:数据传送、算术运算、逻辑运算、程序控制;例如,数据传送包括:传送指令(如MOV)、堆栈操作(PUSH、POP)等,程序控制包括:函数调用(CALL)、转移指令(JMP)等;

2022-06-23 13:56:07 533

原创 CVE-2022-0995分析(内核越界 watch_queue_set_filter)

漏洞成因此漏洞与CVE-2021-22555利用方式相似。@@ -320,7 +319,7 @@ long watch_queue_set_filter(struct pipe_inode_info *pipe, tf[i].info_mask & WATCH_INFO_LENGTH) goto err_filter; /* Ignore any unknown types */- if (tf[i].type >= sizeof(wfilter->t

2022-04-02 11:23:11 962

原创 CFG 地址检测位图构建

目标地址 :0x00b613a0 = ‭00000000 10110110 00010011 10100000‬ (b)首先取高位的3个字节:00000000 10110110 00010011 = 0x00b613那么CFGbitmap的基地址加上 0x00b613 就是指向一个字节单元的指针。这个指针最终取到的假设是:CFGBitmap :0x10100444 = 0001 0000 0001 0000 0000 0100 0100 0100(b)接着判断目标地址是否以0x10对齐:地址 .

2022-03-07 19:45:51 860

superuser相关zip

root过程的核心文件,我这里用来root模拟器的。就这样子了

2018-06-20

xposed挂钩框架原理图

这个工具使用迅捷流程图工具制作的,可能有点大,我的博客上有个虚拟机讲解的博客中有提到,把原图放上来了

2018-03-10

llvm关于词法语法解释的过程

强大的llvm,现代编译器的先锋,利用xmind画的,打开也要用这个

2018-03-10

dirtycow提权漏洞原理图

自己画的关于脏牛漏洞提权的原理图,个人感觉比较清晰,适合小白理解用

2018-03-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除