omnispace的博客

专注AI,物联网,区块链,安卓以及相关安全技术

Learn About Windows Console & Windows Subsystem For Linux (WSL)

Windows Subsystem for Linux (WSL) has made a lot of waves since it was announced at //Build 2016 in April 2016. But as with any new technology, many ...

2019-05-08 04:21:46

阅读数 36

评论数 0

【译】Writing a Simple Linux Kernel Module

掌握 Golden Ring-0 Linux为应用程序提供了强大而广泛的API,但有时这还不够。 与一块硬件交互或执行需要访问系统中特权信息的操作需要内核模块。 Linux内核模块是一段编译的二进制代码,直接插入到Linux内核中,运行在x86-64处理器中最低且受保护程度最低的环0。 此处的...

2018-09-05 14:41:33

阅读数 134

评论数 0

(整理)用户空间_内核空间以及内存映射

内核空间和用户空间  现代操作系统采用虚拟存储器,对于32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的权限。为了保证用户进程不能直接操作内核,保证内核安全,操作系统将虚拟空间划分为两...

2018-04-25 13:09:58

阅读数 1448

评论数 0

资源隔离之 Linux namespace

Linux namespace 简称 ns,在 2002 年 2.4.19 内核中被引入,发展到今天已经有 15 个年头了。2010 年后国内云计算爆发,紧接着 2013 年 Docker 崛起,ns 才作为不可或缺的一部分被重视起来。ns 本身其实比较简单,它是 Linux 内核的一种机制,给进...

2018-04-01 15:55:23

阅读数 3881

评论数 0

How to Use Performance Monitor Unit(PMU) of 64-bit ARMv8-A in Linux

Performance Monitor is an optional feature in ARMv8-A architecture. Performance Monitor in ARMv8-A includes a 64-bit cycle counter, a number of 32-bi...

2018-03-11 16:04:00

阅读数 491

评论数 0

Get Cache Info in Linux on ARMv8 64-bit Platform

On x86 platform, there are many ways to get cache information from a running Linux system. For example, by checking /proc/cpuinfo, or by using tools,...

2018-03-11 16:00:59

阅读数 95

评论数 0

深入理解Linux内存管理--目录导航

日期 内核版本 架构 作者 GitHub CSDN 2016-08-31 Linux-4.7 X86 & arm gatieme LinuxDeviceDrivers Linux内存管理 1 内存描述 CSDN Git...

2018-01-26 08:32:41

阅读数 319

评论数 0

GDB 调试多进程或者多线程应用

GDB 是 linux 系统上常用的 c/c++ 调试工具, 功能十分强大. 对于较为复杂的系统, 比如多进程系统, 如何使用 GDB 调试呢? 考虑下面这个三进程系统 : 进程 ProcessChild 是 ProcessParent 的子进程, ProcessParentThread ...

2018-01-26 08:30:20

阅读数 403

评论数 0

CVE-2016-10229分析

漏洞描述 Linux kernel是美国Linux基金会发布的操作系统Linux所使用的内核。Linux kernel 4.5之前的版本中的udp.c文件存在安全漏洞,Linux内核中的udp.c允许远程攻击者通过UDP流量执行任意代码,这些流量会在执行具有MSG_PEEK标志的recv系统调用...

2018-01-21 13:26:33

阅读数 490

评论数 1

Android内核调试

在分析Linux的内核CVE,或者是编写相关的POC,有时候可能结果与预期不太符合,这个时候就需要查看内核的运行过程。 KGDB kgdb提供了一种使用 gdb调试 Linux 内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。...

2018-01-21 12:57:16

阅读数 1725

评论数 0

Core Dump流程分析

闲话 最近分析问题时,发现我的环境中,经常有用户态进程异常退出,但是却没有core文件生成,简单看了一下相关的内核流程,mark一下。 Core Dump基本原理 当应用程序在用户态发生异常时,比如常见的段错误,通常会生成core文件,通过gdb分析core文件,基本就能定位问题...

2017-08-26 13:17:42

阅读数 661

评论数 0

mmap原理及流程(kernel 4.1版本)

背景 最近在分析问题时,遇到了mmap fb设备失败问题,顺便看了下4.1版本内核中的mmap相关流程,以前看过老版本的,有些忘记了,这里权当记录,供后续参考。 mmap是什么? 相信做过Linux开发的兄弟都或多或少用过,或者听说过mmap,但可能并不完全了解mmap的作用。 mma...

2017-08-26 13:14:47

阅读数 1155

评论数 0

闲聊Linux内存管理(1)

今天还有时间,之前一直想抽时间来写写Linux内核原理相关的东西,关注点不在代码,而在于内在的原理和机制,让大家对Linux内核有个总体的感性认识,个人认为这很有必要,把看似复杂、深不可测的内核实现,用大家都能理解的方式,用讲故事的方式,讲给大家听,如果有人听后,有原来不过如此的感觉,那我的目的就...

2017-08-26 13:12:10

阅读数 279

评论数 0

Mips TLB miss实现in Linux

TLB miss是Mips中内存管理的核心流程。上一篇写了关于Mips中,TLB miss的相关原理,本文关注在Linux kernel中的代码实现。 TLB Refill初始化 内核启动过程中,会对TLB Refill异常进行初始化,设置相应的处理接口。主要流程如下(以R3k为例):...

2017-08-26 13:10:24

阅读数 414

评论数 0

Mips TLB miss异常

最近分析龙芯KVM的实现,顺便又粗看了遍MIPS的手册,跟KVM相关的主要模块包括: CPU虚拟化内存虚拟化IO虚拟化 目前龙芯上CPU虚拟化跟标准内核差异不大,需要软硬件配合支持,目前龙芯整体能支持。 内核虚拟化是龙芯KVM方案的关键,直接决定了性能,这也是本文的源头。 IO虚拟化,...

2017-08-26 13:09:19

阅读数 875

评论数 0

内核中的page fault & copy_from_user

内核态的page fault? 前段时间有同事问了个问题:内核中是否可能发生page fault? 一时没能给出准确答案,当即有种感觉:难道是对内核内存管理的理解还不够,之前在这方面还是比较自信的~ 问题看似很简单,从之前的理解来看,以经典的32位X86为例,内核态低端地址都是线...

2017-08-26 13:08:03

阅读数 468

评论数 0

Mips KVM Trap&Emulate implemented in Linux

基本原理 Trap&Emulate,即陷入&模拟的方式,是纯软件实现的全虚拟化方案,基本不借助硬件虚拟化功能。本文主要关注内存虚拟化实现中的核心,TLB miss相关实现。基本原理是: 所有的TLB miss都将导致Guest退出到VMM处理,然后在VMM中进行相应模拟。 具...

2017-08-26 13:06:45

阅读数 429

评论数 0

Tramp data In Kernel

表象 内核中经常见到某些函数有很多的参数,而且这些参数会一级一级往下面传递,部分参数可能只有最深一级函数才会用到,但却被传递了很多级,其中不乏一些bool型的参数,比如如下的代码流程,6个参数传递了很多级。 kvm_mips_map_page() -> gfn_to_pfn_prot(...

2017-08-26 13:04:16

阅读数 238

评论数 0

如何通过数据包套接字攻击Linux内核

一、前言 最近我花了一些时间使用syzkaller工具对Linux内核中与网络有关的接口进行了模糊测试(fuzz)。除了最近发现的DCCP套接字漏洞之外,我还发现了另一个漏洞,该漏洞位于数据包套接字(packet sockets)中。在这篇文章中,我会向大家介绍这个漏洞的发现过程...

2017-08-11 13:41:42

阅读数 1567

评论数 0

Linux内存初始化(C语言部分)

这篇博客接着上篇博客,继续介绍Linux内核启动过程中内存的初始化过程。 相比于汇编代码,分析C代码有一个优势,因为在之前的汇编代码中已经开启了分页模式,所以可以通过一些symbol直接在某些函数上设置断点,然后通过gdb进行调试。如何用gdb调试内核可以参考这篇博客。 进入x86_6...

2017-03-11 13:44:21

阅读数 700

评论数 0

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