Linux篇-设备树实例
设备树实例1 基本模板这里的设备树由 qemu 平台自动生成, 我们进行导出 加上 -machine virt,dumpdtb=qemu-riscv.dtb 导出.再转变成 dts: dtc -I dtb -O dts -o qemu-riscv.dts...
Linux篇-chrdev
字符设备驱动Notice: 这只是一个模板, 方便后续取用. kernel version: 6.18.5 1...
kspp for openRuyi
KSPP for openRuyi0 概述KSPP 全称 Kernel Self Protection Project, 是一个旨在提升Linux内核本身抵御漏洞利用能力的安全项目. 本篇旨在对比官方推荐的 config 文件与 openRuyi 下的 patch, config, spec 文件来勘察 riscv 配置的合理性. KSPP 项目说明了安全性加固内核的配置应该是什么样子的. Sometimes people ask the Kernel Self Protection Project what a secure set of build CONFIGs and runtime settings are. This is a brain-dump of the various options for a particularly paranoid system. 作者还表述到, 我们也可以通过 kernel-hardening-checker 项目来获取推荐配置. Another place to find recommended kernel...
lfs from riscv
download: https://github.com/Jvlegod/lfs-from-riscv/releases/ 1 环境搭建全程建议给执行的用户目标权限. 这样后面就尽量别用 sudo, 容易出错. 1sudo chown -R lfs:lfs $LFS/tools $LFS/sources $LFS/usr $LFS 如果没有创建该用户. 123456# 创建 lfs 组sudo groupadd lfs# 创建 lfs 用户并加入组,指定 bash 为 shellsudo useradd -s /bin/bash -g lfs -m -k /dev/null lfs# 给 lfs 用户设置密码sudo passwd lfs 后期恢复权限. 123sudo chown -R root:root $LFS/toolssudo chown -R root:root $LFS/sourcessudo chown -R root:root $LFS/usr 安装 riscv64 所需要的模拟器. 12sudo apt install qemu-user-static...
二进制安全调研
二进制安全用户态 Roadmap本次目的为研究, RISC-V 架构在用户态执行时的漏洞检测, 分析, 利用, 测试, 逆向, 插桩, 运行时监控能力的可能性. 希望后续能够 proting RISC-V 相关的一套二进制安全工具链, 能覆盖: 从漏洞发现 => 原因分析 => 利用验证 => 运行时约束的完整闭环能力. 为 RISC-V 用户态软件提供从开发到上线的全流程安全维护能力. TODO: 可以看到本篇中涉及到的软件生态是非常复杂的, 还有很多软件我并没有详细地去介绍和运行, 毕竟不能讲空话, 这个工作量巨大, 需要很多的积累才能一步步补充完整, 如果没有亲自去涉足笔者是不会轻易口嗨的, 因此本篇中的话语都是有依据可信的, 不可信的部分会单独进行一些说明. 0 写在前面的话再次强调, 本次的调研的目的是为了了解用户态二进制安全领域相关的关键路径, 便于为了后续的探索铺路(后续如果进一步去研究内核态的情况了会另出一版) 本次探索的难点在于两个方面: 第一个难点是我如何得知自己探索的软件在生态内是否是关键软件?...
Linux 内核社区交互与补丁提交指南
Linux 内核社区交互与补丁提交指南本指南记录了向 Linux Kernel Mailing List (LKML) 及其分支列表(如 RISC-V)发送邮件/补丁的标准流程. 以 https://lore.kernel.org/all/6eafdd754222e11a43be4bbc3652f7605d47afa6.1766559840.git.sanjayembeddedse@gmail.com/ 为例. 1 环境准备 git-email b4 2 配置123456789101112# 基础身份配置# git config --global user.name "Keke Ming"# git config --global user.email "ming.jvle@gmail.com"git config --global user.name <"Your Real Name">git config --global user.email...
linux篇-手写文件系统
1 结构体示意此前在虚拟文件系统篇章应该已经列举过一部分结构了, 这里我们继续用一个实例来完成本篇. 这里纠正一下前面的一些概念, 我们编码当中的 sb 指代的是该文件系统的一个实例, 而不是物理意义上的超级块. 类型 表示什么 super_block 一个挂载的文件系统 inode 一个文件或目录 dentry 路径名到 inode 的映射 struct file_system_type. fs_flags. 标志 作用 FS_REQUIRES_DEV 表示文件系统需要块设备(如 ext4/xfs) FS_BINARY_MOUNTDATA mount 参数是二进制数据(较少见) FS_HAS_SUBTYPE 支持子类型,例如 fuse.sshfs FS_USERNS_MOUNT 允许 user namespace 的 root 挂载 FS_RENAME_DOES_D_MOVE 自己处理 d_move(),VFS...
busybox config SSH
BusyBox 配置 SSH1 准备工作我们可以编译需要的 dropbear 工具: https://github.com/mkj/dropbear/releases 123456789# 切换到解压的源码目录下./configure --enable-staticmake PROGRAMS="dropbear dbclient dropbearkey scp"# 将编译完成的程序 cp 到 rootfs 目录cp dropbear /path/to/rootfs/usr/sbin/cp dropbearkey /path/to/rootfs/usr/bin/cp dbclient /path/to/rootfs/usr/bin/cp scp /path/to/rootfs/usr/bin/ BusyBox 极简 rootfs...
uprobe
0 引言 kernel 6.6.109 该篇为了探究 uprobe 的执行流程和结构. 1 测试代码trace_uprobe.ko 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <linux/module.h>#include <linux/ptrace.h>#include <linux/uprobes.h>#include <linux/namei.h>#include <linux/moduleparam.h>MODULE_AUTHOR("john doe");MODULE_LICENSE("GPL v2");static char *filename;module_param(filename, charp, S_IRUGO);static long...
altlinux
0 引言ALT Linux 是源自俄罗斯的 Linux 发行版, 基于 RPM 软件包格式与 APT-RPM 包管理体系构建. 就算是官网对于系统本身的介绍也不够详细. ALT Linux创始于2001年, 由两个大的俄罗斯自由软件计划合并而来. 2008年它成为了一个大的组织, 从事自由软件的开发和部署、文档和技术资料撰写、用户支持及定制产品开发工作. ALT Linux面向不同的目的生产不同类型的发行.这包括面向家庭、办公计算机、企业服务器的各种桌面发行, 广泛包含各种开发工具和文档的通用发行, 认证产品, 面向教育机构的专用发行, 以及面向低端计算机的发行. ALT Linux拥有自己的基础开发设施和软件仓库, 称为Sisyphus, 它为所有不同类型的ALT Linux提供基础. (https://distrowatch.com/table.php?distribution=alt) PS: 由于这是一个俄罗斯的发行版, 对于中文生态的支持是不太足够的, 甚至官网对英文的文档翻译都不够完善, 下篇我们抛开国别问题对该发行版进行探索. 1 系统理念在 “What Is...