<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
      <title>🚂QRZ的星穹列车</title>
      <link>https://qrz.today</link>
      <description>最近的20条笔记 on 🚂QRZ的星穹列车</description>
      <generator>Quartz -- quartz.jzhao.xyz</generator>
      <item>
    <title>Nix on LXC：在不同的 LXC 中使用同一套 Nix 包管理</title>
    <link>https://qrz.today/essay/2026/01-nix-on-lxc</link>
    <guid>https://qrz.today/essay/2026/01-nix-on-lxc</guid>
    <description><![CDATA[ 在上一篇文章中，我引入了 Nix 管理 Arch 上的软件包。不久之后，抱着好奇与探索的心态，我参加了国内爱好者举办的 NixOS Meetup #2，社区的分享让我获益匪浅。 Nix，你好！ 最近在配置 PVE 上的多个 LXC 实例时，为了解决环境配置的重复劳动问题，让我又一次想到了 Nix。Nix 打包后的环境天然具有只读属性，配合宿主机的 ZFS 共享存储，理论上可以实现所有 LXC 实例使用同一套 Nix 环境。 我去研究了一下 Home Manager using Nix 的实现，它其实是通过 activate 脚本进行的环境初始化。这样的话，我们只需要在其他 LXC 中调用这个 ... ]]></description>
    <pubDate>Thu, 08 Jan 2026 15:45:00 GMT</pubDate>
  </item><item>
    <title>2025 年，更优雅地使用 Arch Linux</title>
    <link>https://qrz.today/essay/2025/12-switch-to-arch-linux</link>
    <guid>https://qrz.today/essay/2025/12-switch-to-arch-linux</guid>
    <description><![CDATA[ 2025 年末，我将日常办公的笔记本电脑系统切换到了 Arch Linux 上。 建议先从缘起开始阅读。后日谈为后续遇到的一些问题与解决方案。 后日谈 2025-12-24 VMWare 问题一：（不完全解决） 遇到了 $ vmware (vmware:31175): Gdk-WARNING **: 10:05:02.847: The program &#039;vmware&#039; received an X Window System error. ]]></description>
    <pubDate>Tue, 02 Dec 2025 13:50:00 GMT</pubDate>
  </item><item>
    <title>CVE-2017-1000405 Linux 内核内存子系统条件竞争漏洞</title>
    <link>https://qrz.today/vulns/2017/CVE-2017-1000405/CVE-2017-1000405</link>
    <guid>https://qrz.today/vulns/2017/CVE-2017-1000405/CVE-2017-1000405</guid>
    <description><![CDATA[  真是一对苦命鸳鸯 前置知识 CVE-2016-5195 见 CVE-2016-5195 Linux 内核内存子系统条件竞争漏洞 Linux 内存分页历史 分页机制的本质是建立虚拟地址到物理地址的映射索引。在早期的 8 位或 16 位处理器中，寻址范围有限（如 64KB），且多用于单任务环境，处理器通常直接访问物理内存。然而，现代操作系统为了支持多任务并发和内存保护，直接寻址已不再适用。 为此，我们在虚拟地址和物理地址之间引入了一层中间结构——页表（Page Table）。当 CPU 访问内存时，硬件（MMU）会先以虚拟页号为索引查询页表，获取对应的物理页号，再与页内偏移量求和最终访问实际的物... ]]></description>
    <pubDate>Fri, 21 Nov 2025 15:58:00 GMT</pubDate>
  </item><item>
    <title>CVE-2022-0847 Linux 内核文件子系统 pipe_buffer 未初始化漏洞</title>
    <link>https://qrz.today/vulns/2022/CVE-2022-0847/CVE-2022-0847</link>
    <guid>https://qrz.today/vulns/2022/CVE-2022-0847/CVE-2022-0847</guid>
    <description><![CDATA[ 本文以 Linux Kernel 5.15（commit 8bb7eca）为例进行分析。 Tldr CVE-2022-0847 是一个因文件子系统中的零拷贝机制在处理 pipe_buffer 时未初始化 flags，结合 splice 系统调用导致的漏洞。用户可以构造大量带有 PIPE_BUF_FLAG_CAN_MERGE 标志位的 pipe_buffer 并释放，接着调用 splice 函数从文件向管道填充数据，由于 flags 未正确初始化，将沿用之前的 pipe_buffer 的标志位。此时向管道中写入则可修改文件的 page cache。 代码分析 首先来看一下本次分析用到的结构体和重... ]]></description>
    <pubDate>Tue, 18 Nov 2025 16:30:00 GMT</pubDate>
  </item><item>
    <title>深入理解 LibAFL：Mutator 篇（一）</title>
    <link>https://qrz.today/fuzzing/2022-libafl/dive-into/mutator/1-HavocScheduledMutator</link>
    <guid>https://qrz.today/fuzzing/2022-libafl/dive-into/mutator/1-HavocScheduledMutator</guid>
    <description><![CDATA[ 前言 与 Executor 类似，如果我们想为 LibAFL 实现变异器，只需要实现 Mutator trait 和 Named trait 即可。 在 LibAFL 的源码中其实已经给出了 NopMutator 这一示例： src/mutators/mod.rs/// [`Mutator`] that does nothing, used for testing. ]]></description>
    <pubDate>Thu, 09 Oct 2025 11:00:00 GMT</pubDate>
  </item><item>
    <title>深入理解 LibAFL：Executor 篇（一）</title>
    <link>https://qrz.today/fuzzing/2022-libafl/dive-into/executor/1-baby-executor</link>
    <guid>https://qrz.today/fuzzing/2022-libafl/dive-into/executor/1-baby-executor</guid>
    <description><![CDATA[ 在 LibAFL 中，Executor 是一个 trait，我们只需要实现一个方法：run_target。以 GenericInProcessExecutor 为例： impl&lt;EM, H, HB, HT, I, OT, S, Z&gt; Executor&lt;EM, I, S, Z&gt; for GenericInProcessExecutor&lt;EM, H, HB, HT, I, OT, S, Z&gt; where S: HasExecutions, OT: ObserversTuple&lt;I, S&gt;, HT: ExecutorHooksTuple&lt;I, S... ]]></description>
    <pubDate>Tue, 07 Oct 2025 15:59:00 GMT</pubDate>
  </item><item>
    <title>请再给自己一次机会</title>
    <link>https://qrz.today/essay/2025/05-please-stay-alive</link>
    <guid>https://qrz.today/essay/2025/05-please-stay-alive</guid>
    <description><![CDATA[ 在五月短短的一个月内，已经有三位同学先后离世了，我的心里很难受。我从来不愿意听闻或目睹生离死别、悲欢离合，因为我总是忍不住地带入其中。生存要做无数次选择，而选择死亡则只需要做一次，但做出那次选择之后，人生就再也没有其他机会了。 在这样的年代出生，我们面临的压力并不来源于生存，而是来源于与他人的竞争、父母的期待和内心的渴望。我们害怕失败，害怕被同龄人抛下，害怕让爱我们的人失望，更害怕自己的一事无成。当压力累积到顶点时，“放弃”似乎成了唯一的解脱。 但我想说：“人生的容错率，远比你想象的要高”。 我知道，这是一句无比正确的鸡汤，网上的讨论也已经铺天盖地了。但我也深知，当压力真的倾轧在了一个人的身上... ]]></description>
    <pubDate>Sat, 31 May 2025 01:30:00 GMT</pubDate>
  </item><item>
    <title>202505 日记&amp;行迹：开端与终结</title>
    <link>https://qrz.today/essay/2025/05-trip-and-funeral</link>
    <guid>https://qrz.today/essay/2025/05-trip-and-funeral</guid>
    <description><![CDATA[ 五月的上旬经历诸多变故，本打算写一份游记的，结果写着写着变成月记了。 内容导览 河南游记 见证婚礼 技术与生活的思考 归程与送别 请再给自己一次机会 五一假期在河南好好转了几天，趁着记忆尚未消散，记录一下这几日的见闻。愿我的旅程对屏幕前的你也有帮助。 计划有变，旅途奔波 在同昱兄的邀请下，我有幸参加他与文正的婚礼。仔细想想自从毕业旅行之后我还没出去旅游过，正好借着这次机会出去玩一玩，就这样，我的五一之行开始了。 作为一个懒人，我最初的计划很简单：2 号出发，在洛阳溜达溜达，看完龙门石窟后就躺到婚礼当天。结果计划不如变化快，我订了 8:12 出发到洛阳龙门的高铁，当晚我只通过口令向小爱音箱预定了... ]]></description>
    <pubDate>Sat, 31 May 2025 01:00:00 GMT</pubDate>
  </item><item>
    <title>踩坑篇：将移动硬盘挂载为 WSL 下的用户主目录</title>
    <link>https://qrz.today/notes/wsl/make-portable-disk-as-home</link>
    <guid>https://qrz.today/notes/wsl/make-portable-disk-as-home</guid>
    <description><![CDATA[ 虽然 Windows 已经成为了很棒的 Linux 发行版，不过在使用时会逐渐累积一个很大的 vhdx 文件。尽管我们可以迁移子系统文件到其他硬盘，但是总而言之都不是很方便使用。因此我希望将 wsl 的数据移动到移动硬盘中。 Tldr 如果对踩坑的过程不感兴趣，请直接跳到正确的挂载方式这一节。 前言 移动哪些数据到外置硬盘中呢？一种思路是将整个虚拟机都放进移动硬盘。由于 wsl 本质上是一个 vhdx，因此我们可以将这个 vhdx 放入移动硬盘，在其他电脑上使用时配置注册表。但以我在移动硬盘中使用虚拟机的经验，如果突然断连大概率出现数据损坏，而且我还希望可以同时在 Linux 和 Window... ]]></description>
    <pubDate>Tue, 15 Apr 2025 12:20:25 GMT</pubDate>
  </item><item>
    <title>CVE-2021-3156 sudo 堆溢出漏洞分析</title>
    <link>https://qrz.today/vulns/2021/CVE-2021-3156/CVE-2021-3156-poc</link>
    <guid>https://qrz.today/vulns/2021/CVE-2021-3156/CVE-2021-3156-poc</guid>
    <description><![CDATA[ 前言 CVE-2021-3156 是 sudo 的一个堆溢出漏洞，可以用来进行本地提权。 漏洞影响版本为 1.8.2-1.8.31sp12, 1.9.0-1.9.5sp1，sudo &gt;=1.9.5sp2 的版本则不受影响。 环境搭建 有人制作好了 Docker 镜像，可以直接拿来用：hub.docker.com/r/chenaotian/cve-2021-3156 docker pull chenaotian/cve-2021-3156 docker run -d -ti --rm \ --privileged -h sudodebug \ --name sudodebug \ --ca... ]]></description>
    <pubDate>Fri, 04 Apr 2025 16:57:06 GMT</pubDate>
  </item><item>
    <title>Qemuafl 实现分析</title>
    <link>https://qrz.today/fuzzing/2020-qemuafl/0.0.how-qemuafl-works</link>
    <guid>https://qrz.today/fuzzing/2020-qemuafl/0.0.how-qemuafl-works</guid>
    <description><![CDATA[  概述 by ChatGPT 本文从 qemuafl 的初始化、持久模式到插桩流程详细解析了其核心机制，包括 afl_setup 的环境变量配置、afl_forkserver 的与 AFL++ 的交互，及 afl_gen_trace 的插桩逻辑。还分析了持久模式核心函数如 afl_persistent_loop 的运行逻辑及其与共享内存和寄存器快照的关系，揭示了 qemuafl 高效模糊测试的实现原理。 初始化流程 在 qemuafl/accel/tcg/translator.c 的 translator_loop 函数中，如果要翻译的基本块中包含 afl_entry_point 则调用 af... ]]></description>
    <pubDate>Fri, 21 Feb 2025 12:00:00 GMT</pubDate>
  </item><item>
    <title>QEMU 插件实现初探</title>
    <link>https://qrz.today/notes/qemu/plugins/0.0.how-plugin-works-1</link>
    <guid>https://qrz.today/notes/qemu/plugins/0.0.how-plugin-works-1</guid>
    <description><![CDATA[  Info 目标 QEMU 版本为 5.2.0/5.2.50，主要分析 user mode 下的插件加载。 编译方法 在编译阶段，用户可以使用 --enable-plugins 参数启用插件功能。 添加该参数会向 Makefile 添加参数 CONFIG_PLUGIN=y。 在开启该参数时还会添加 ld_dynamic_list 或 ld_exported_symbols_list 参数。 如果添加了 ld_dynamic_list 参数，则将 plugins/qemu-plugins.symbols 复制到 build/qemu-plugins-ld.symbols； 如果添加了 ld_ex... ]]></description>
    <pubDate>Fri, 14 Feb 2025 09:39:47 GMT</pubDate>
  </item><item>
    <title>协谷 X6100 替代固件使用方法与拓展方法介绍</title>
    <link>https://qrz.today/ham-radio/devices/radios/xiegu-x6100/alternative-firmware-r1cbu-r2rfe</link>
    <guid>https://qrz.today/ham-radio/devices/radios/xiegu-x6100/alternative-firmware-r1cbu-r2rfe</guid>
    <description><![CDATA[  本文同步发表在 HamCQ 论坛：forum.hamcq.cn/d/4271 由于笔者比较社恐且不习惯直接喊话，因此在考 B 之前并未进行太多通联。在考取 B 证后笔者成为了社畜，加上住处电磁环境复杂导致购买了设备之后也没怎么使用过，直到前几天才在学弟的鼓励下开始尝试 FT8 通联，遇到了以下情况： 笔者苦于协谷 X6100 原生固件的不足，也没钱没空间买新的设备，因此希望寻找改进协谷 X6100 固件的方法，在一番搜索过后，笔者找到了协谷 X6100 的替代固件并兴致勃勃地摸索它的功能。笔者希望能趁着这股新鲜劲对业余无线电的一些基础知识和设备使用进行学习，本文则尝试简单介绍一下该替代固件和... ]]></description>
    <pubDate>Sun, 05 Jan 2025 09:21:17 GMT</pubDate>
  </item><item>
    <title>从安全问题研究 C 中的未定义行为：有符号整数溢出</title>
    <link>https://qrz.today/notes/c-lang/UB-Signed-Overflow-make-code-unsafe-1</link>
    <guid>https://qrz.today/notes/c-lang/UB-Signed-Overflow-make-code-unsafe-1</guid>
    <description><![CDATA[  更新历史 2024-10-12：修改文章中的一些错误，补充一些内容。 最近偶然间看到一个编译器优化导致的问题，感觉比较有趣，自己还没有分析过类似的问题，正好分析一下。 问题引入 gcc 在 -O2 以上级别的优化中会将有符号整数溢出完全忽略，在上面的问题中，作者的本意是希望通过溢出之后的负值来判断是否存在溢出： while (p&lt;end &amp;&amp; *p&gt;=&#039;0&#039; &amp;&amp; *p&lt;=&#039;9&#039;) { number = number*10 + (*p)-&#039;0&#039;; if (number&lt;0) {... ]]></description>
    <pubDate>Fri, 13 Sep 2024 02:57:55 GMT</pubDate>
  </item><item>
    <title>Fuzzing 101 with LibAFL 学习（一）</title>
    <link>https://qrz.today/fuzzing/2022-libafl/fuzzing101/study-note-1</link>
    <guid>https://qrz.today/fuzzing/2022-libafl/fuzzing101/study-note-1</guid>
    <description><![CDATA[ 参考 Fuzzing101 with LibAFL - Part I: Fuzzing Xpdf1 和 Fuzzing101 with LibAFL - Part I.V: Speed Improvements to Part I2 做一下笔记。libafl 的自由度相当高，我觉得学习路线会比较陡峭，这一次我就不求甚解一波。 复现 先下载 xpdf cd fuzzing-101-solutions/exercise-1 wget dl.xpdfreader.com/old/xpdf-3.02.tar.gz tar xvf xpdf-3.02.tar.gz rm xpdf-3.02.tar.gz... ]]></description>
    <pubDate>Sat, 07 Sep 2024 15:15:50 GMT</pubDate>
  </item><item>
    <title>AFL 运行流程多图流（缓慢更新中）</title>
    <link>https://qrz.today/fuzzing/2013-afl/AFL-runtime-images</link>
    <guid>https://qrz.today/fuzzing/2013-afl/AFL-runtime-images</guid>
    <description><![CDATA[ 因为希望更好的理解 AFL 的状态变化和运行时的流程，故在阅读源码的基础之上绘制一些 AFL 运行时的流程图。仅供参考，如有错误，欢迎批评指正。 gcc forkserver mode llvm forkserver mode llvm persistent mode 相关文件 待补充. ]]></description>
    <pubDate>Fri, 06 Sep 2024 14:15:28 GMT</pubDate>
  </item><item>
    <title>小米平板 6s Pro root 简单记录</title>
    <link>https://qrz.today/notes/android/devices/2024-xiaomi-pad6s/xiaomi-pad6s-root-with-magisk-delta</link>
    <guid>https://qrz.today/notes/android/devices/2024-xiaomi-pad6s/xiaomi-pad6s-root-with-magisk-delta</guid>
    <description><![CDATA[  更新记录 2025-05-28 Update：已卖出，再也别见，HyperOS。入手华为 Matebook E Go 2025-04-07 Update：切换到 KernelSU 2025-02-09 Update：补充 OTA 升级指南 2024-09-07 Update：添加完美横屏应用计划。随着小米对解锁 BL 权限的进一步收缩，鉴于原生 HyperOS 垃圾的横屏适配体验，不建议在用户能够自由解锁自己的设备之前购买任何小米设备。 这里的自由解锁指的不是在咸鱼上花钱解锁，也指的不是答题解锁，而是一键式的解锁。 如果追求不 root 的体验，小米平板远远不如华为的 Matepad 系列或... ]]></description>
    <pubDate>Wed, 17 Jul 2024 14:36:31 GMT</pubDate>
  </item><item>
    <title>为 Quartz 添加 abcjs 音乐插件</title>
    <link>https://qrz.today/notes/quartz/2024-04-add-abcjs</link>
    <guid>https://qrz.today/notes/quartz/2024-04-add-abcjs</guid>
    <description><![CDATA[ 在网上冲浪时，无意中发现了 abcjs 这个将文字渲染成乐谱的软件，感觉很有趣，而且还有开发者为 Obsidian 维护了 obsidian-plugin-abcjs 插件，我想试试能不能移植到 quartz 上。 菜鸟警告 前端菜鸟，毫无经验； 如有错误，多多指教； 失败的引入 在阅读 ObsidianFlavoredMarkdown 的处理代码的时候，我发现对 mermaid 的处理符合我的要求： quartz\plugins\transformers\ofm.ts if (opts.mermaid) { js.push({ script: ` let mermaidImport = un... ]]></description>
    <pubDate>Fri, 19 Apr 2024 17:29:14 GMT</pubDate>
  </item><item>
    <title>SNMP 协议介绍</title>
    <link>https://qrz.today/notes/protocols/snmp/snmp-introduction</link>
    <guid>https://qrz.today/notes/protocols/snmp/snmp-introduction</guid>
    <description><![CDATA[ SNMP 协议简介。 这里先对 SNMP v2c 及之前版本的协议概念做简单介绍。 概念 SNMP（Simple Network Management Protocol，简单网络管理协议）是在 SGMP（Simple Gateway Monitoring Protocol，简单网关监控协议）的基础上实现的。在 SGMP 的基础上，SNMP 添加了新的管理信息结构和管理信息库。 SNMP 协议用于收集和整理 IP 网络上被管理设备的信息，它可以修改这些信息，从而改变设备的行为。 SNMP 是基于 UDP 协议的。 基本组件 SNMP 由一组网络管理标准组成，包括应用层协议、数据库模式和一组数据对... ]]></description>
    <pubDate>Tue, 16 Apr 2024 13:06:09 GMT</pubDate>
  </item><item>
    <title>CVE-2019-7482 Sonicwall SMA 100 supportLogin 缓冲区溢出漏洞</title>
    <link>https://qrz.today/vulns/2019/CVE-2019-7482/CVE-2019-7482</link>
    <guid>https://qrz.today/vulns/2019/CVE-2019-7482/CVE-2019-7482</guid>
    <description><![CDATA[ 一个简单的漏洞分析。 环境搭建 首先下载虚拟机然后导入到 VMWare 中，可以参考官方文章的一部分1，需要注意的是： 默认密码 root/password 注意绑定的网卡，之后需要手动配置 IP。 之后访问 https://target_ip 就可以进入配置了。 获得 root shell Info 旧版的 root 比较好拿，新版的可以参考 SonicWall SMA漏洞研究 这一篇文章。 参考 w0lfzhang 的文章2，首先用其他镜像挂载，然后修改 ./etc/passwd 文件，将 root 的登录环境修改为 /bin/sh。 没看懂文章是怎么手动调用 sshd 的，只能把 adm... ]]></description>
    <pubDate>Mon, 11 Mar 2024 02:02:13 GMT</pubDate>
  </item>
    </channel>
  </rss>