

Recent
Installing pwndbg From Source With venv
·481 words·3 mins
This is the way I install pwndbg from a local checkout when I want the Python dependencies isolated in a venv.
I am not using setup.sh here. The script is convenient, but it also tries to install system packages with sudo. For a clean user-level install, I prefer doing the Python part explicitly.
Installing pwntools Locally and Importing pwn
·485 words·3 mins
I hit this while installing a local pwntools checkout:
error: externally-managed-environment This is not a pwntools problem. It is Python packaging doing what the distro asked it to do. On recent Debian and Ubuntu systems, the system Python is marked as externally managed, so pip install into the global interpreter is blocked by default.
网络安全考古:NSE 入门
NSE 是 Nmap Scripting Engine,是 Nmap 内置的 Lua 脚本扩展系统,用来在端口扫描和服务识别之后继续做协议探测、资产发现、漏洞验证和结构化信息采集。它常见于 HTTP 指纹识别、TLS 证书分析、数据库未授权探测、默认账号检查和轻量级漏洞检测等场景。
网络安全考古:使用 NSE 编写一个 HTTP(S) 资产指纹脚本
NSE 是 Nmap 的 Lua 脚本引擎,适合把一次协议探测挂到 Nmap 的扫描结果上。这篇直接进入实操:编写一个 HTTP(S) 资产指纹脚本,用于 Web 资产发现,提取状态码、Server、Location、Content-Type、title、body 长度、body hash 和 preview。
如何设计虚拟机的关机流程
·925 words·5 mins
虚拟机的关机流程很容易被写成一团:收到用户中断,发一个信号,关几个服务,杀掉虚拟机,然后退出。
这看起来能工作,但一旦运行时变复杂,就会暴露出许多问题:日志丢失、磁盘没来得及 sync、guest-agent 没跑完整、宿主侧代理提前退出、第二次 Ctrl-C 也不能立刻结束。
这次 revm 的关机流程重构,本质上不是修一个 Go 代码问题,而是重新思考一个虚拟机运行时应该如何表达“关机”。
Hugo Blowfish 博客迁移与配置记录
·566 words·3 mins
最近把这个博客从 Jekyll 迁移到了 Hugo,并使用 Blowfish 作为主题。整个过程并不复杂,但有不少细节容易混在一起:Hugo 的资源目录、Blowfish 的配置入口、GitHub Pages 的部署方式、文章迁移后的图片路径、首页摘要、favicon、SEO,以及哪些内容应该交给主题配置,哪些内容应该用站点级覆盖。
这篇记录把这次迁移和配置经验整理下来,方便以后复盘。
glibc ptmalloc 分析笔记
围绕 GLIBC ptmalloc,记录 tcache、smallbins、malloc 路径和堆结构的调试分析。
MSM8916/UFI 研究记录
记录 MSM8916/UFI 设备上的 lk2nd、OpenWrt 启动、分区和调试过程。
UFI001C 平台折腾记录
记录 UFI001C/MSM8916 平台刷写 OpenWrt、配置网络、SSH、ZRAM 与救援流程。
_dl_fixup 机制研究记录
·1903 words·9 mins
glibc 不支持 Clang 编译,或者说暂时不支持。因为 glibc 本身使用了大量GCC独占的特性。但开源社区也有尝试用 Clang 构建 glibc。
GDB 调试本地程序和库
·428 words·3 mins
Linux 生态是开源的,所以调试所需的源码和 debug symbol 可以很方便地获取到。方便到什么程度?如果使用 Ubuntu Jammy 以上版本,那么:
CMakeLists.txt 入门模板
编写 CMakeLists.txt 的套路基本就是这样,先填写 project 信息,然后引用宏,定义自己的 option,写判断语句,然后 add_executable,target_sources。
ZeroTier 更改 HOME 目录
zerotier-one 在启动的时候会建立 /var/lib/zerotier-one 作为自己的工作目录,里面存放了zerotier 运行时所需要的配置文件。
Rockchip Wi-Fi/BT 调试笔记
WL_ROCKCHIP 下的 Realtek 模组和 AP6xxx 模组不能同时选择为 y,AP6xxx 和 Cypress 也是互斥的。至于 out-of-tree 模块则没有这个限制,可以在 Buildroot 中直接修改 Makefile。
解决 UFI003 外置 SIM 卡无法启用的问题
·107 words·1 min
OpenStick 为 410 Wi-Fi 板适配的 Linux 内核可以在 UFI003_MB_V02 主板上启动,但 modem 工作不正常。插入 SIM 卡后,使用 mmcli -m 0 查看 modem 状态时,会发现 sim-missing 异常:
GDB/GCC/Binutils 笔记
整理 GDB、GCC、Binutils 相关调试笔记,包括 CMake 参数、链接选项和符号调试环境。
你家的光猫,你能怎么办?(二)
拿到光猫的最终控制台后,接下来怎么办?是不是可以放一点私货进去? 首先,光猫的 cpu 架构是mips32架构,这一点可以从 cat /proc/cpuinfo 这条命令验证。
Distcc 快速上手与性能优化
·1464 words·7 mins
重新编译内核真的是非常耗时。修改内核树内的驱动不用重新构建整个内核,但每修改调度、文件系统这类底层代码,都需要重新构建一次 zImage 镜像,然后分发到测试机器上。构建 kernel 巨浪费时间,不知道内核开发者怎么受得了这种苦。
Distcc 集群构建测试结果
记录不同 ARM 节点组成的 Distcc 集群在构建 Node.js 等大型项目时的测试结果。
BinaryHub:预构建嵌入式二进制工具
你可以在我的 GitHub 上下载到这些二进制 ELF 工具,如 curl,wget,ftp,busybox 等。这些工具主要用于分析嵌入式设备的固件,搭建测试环境,还可以整点有趣的活,比如在运营商的光猫上跑点自己的代码,比如 PHP 和 Perl。
给 Java 开发环境配置代理
·91 words·1 min
真是烦死了,每次看 Maven 的 Java 项目都要经历 jar 包下载失败;手动执行 mvn dependency:sources,又依赖下载失败,浪费巨多时间。
BetterProfiler 比赛文档
BetterProfiler 是一个针对嵌入式 Linux 的进程动态跟踪器。BetterProfiler 可追踪进程与内核的整个生命周期,文件 IO,网络IO,内存操作,加密读写等。
Buffer Overflow 入门笔记
·391 words·2 mins
functions echo 的 scanf 没有对输入的buffer 大小做限制而用户可以输入超长字符串覆盖函数的 return 地址,进而跳转执行 secretFunction 函数。
IntelliJ IDEA Community Edition 源码构建记录
·176 words·1 min
你可能不知道的是 IntelliJ IDEA 社区版是开源的,其源代码托管在 https://git.jetbrains.org 中。
