博文

近期学习记录

 最近一个星期花时间恶补了一下 CSAPP. 在此记录一下。 我看的是第三版中文版。之前自己有点排斥各种技术类书籍的中译版,主要是觉得翻译质量不佳,且还得找专有名词对应的英文词汇。但是现在又觉得还是中文阅读速度高(不确定是不是真的比英文高很多,对于我扫视单位面积文字获取的信息量来说我猜是中文高),好像阅读的心智负担小一些。 总之觉得没有必要强求自己看英文版。 可能由于我事先对中译的要求放得比较低,读下来感觉质量还好,没有什么特别大的理解上的障碍。反而英文原版在排布代码段和插图上明显不如中译版人性化(离对应文字太远,得来回看)。 阅读重点在“第二部分:在系统上运行程序”。第一部分看上去主要是计组和体系结构的内容,我感觉实际编程中实用性不如后面两部分。而第二部分介绍了 ISA 和操作系统共同为上层应用程序提供的机制,包括链接、异常控制流和虚拟内存。链接里的 GOT 表和 PLT 表和 pwn 以及 PLT Hook 技术直接相关。异常控制流并不只是指一些语言里 try catch 这样的异常机制,它与普通的顺序执行、条件跳转和循环等正常控制流相对,是除了这种正常控制流以外一切控制流的总称。虚拟内存中重要的知识点有内存和外存之间的换入换出机制,共享/私有内存以及相关的 CoW 机制,以及堆内存管理。 其实我第一次看 CSAPP 是两年多前,当时自己还没转来计算机专业,也没学过数字逻辑和计组这两门先导课程,所以读不下去。如今在学校里学了一遍各种计算机专业课的考研导向版本,想着回来补一补正统的计算机科学教育,倒确实轻松一些。就算之前学的已经忘得差不多了,看着各种隐约有点印象的名词也会有些亲切感,自然就不觉得难了。读书百遍,其义自现。  之前玩逆向的时候遇到不懂的地方总是想着这么复杂怎么可能学得完,于是会想方设法地逃避和绕过。对理解比较庞大复杂的系统总有种惧怕感。如今学得越来越多,感觉虽然距离真正理解还很遥远,但也不是不可能的事。 单纯看书的缺点在于学了不少理论,但是缺乏实践,很多地方还是有不少 gaps. 春招在即,恐怕来不及好好做南大的 ICS PA 了,下一步可能还是为了找工硬啃一下 Android Runtime. 不知道能学得多明白呢?

Proxmox VE 直通核显给 macOS 使用

 参考 http://vfio.blogspot.com/2016/07/intel-graphics-assignment.html 使用 Legacy 方式,具体操作可见 https://imacos.top/2024/04/22/i44fx/ 我的 CPU 是 i5-8600K,下载了他提供的 8265U 的 rom, 用 https://github.com/awilliam/rom-parser 改了设备 ID 就可以用了。

内耗

今天尝试准备软件工程这门课的考试,但是学不进去……感觉教得很死板,又是纯纯的应试学习。 应试的东西学得多了连自己计划好自学的东西都学不进去。因为应试的花了大量时间,成果也就一般(会不会反而说明不花那么多时间连及格都没有),而自学的东西荒废了很久了,两相叠加就会有一种很大的挫败感。 应试久了,学任何东西都会有一种很深的算计心态。总是想着这个值得学吗,有没有更重要的,有没有速通的办法。因为应试的时候就是这样,没把握好考纲里的重点,学了也出不了成绩。久而久之竟然什么东西都不想学了。

Archlinux 上安装老 Epson 打印机驱动

 打印机型号为 Epson M105 Series. 通过官网 http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX 查询得驱动包名称为 epson-inkjet-printer-201215w,AUR 上也有对应的包。但是已经好几年不更新了。直接安装 AUR 上的 1.0.0 版无法正常编译,说是找不到 debug_msg 这个函数。我不想深究,正好有新版 1.0.1 的源码包,于是直接下载下来在本地开个服务器 serve 给 Arch 编译,对应修改 PKGBUILD 即可。fixbuild.patch 也不需要了。 安装后还得把 filter 可执行文件复制到 CUPS 的目录下 sudo cp /opt/epson-inkjet-printer-201215w/cups/lib/filter/epson_inkjet_printer_filter /usr/lib/cups/filter 完整 PKGBUILD 如下: # Contributor: Andre Klitzing <andre () incubo () de> pkgname=epson-inkjet-printer-201215w _pkgname_filter=epson-inkjet-printer-filter _suffix=1.src.rpm pkgver=1.0.1 pkgrel=10 pkgdesc="Epson printer driver (M100, M105, M200, M205)" arch=('i686' 'x86_64') url="http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX" license=('LGPL' 'custom:Epson Licence Agreement') depends=('cups' 'ghostscript') #makedepends=('libtool' 'make' 'automake' 'a...

自建内网服务并使用 Cloudflare Tunnel 反向代理

配置 CF Tunnel 的 systemd 服务,使用 http2 协议以便于前面套透明代理。 # /etc/systemd/system/cloudflared.service [Unit] Description=Cloudflare Tunnel After=network.target [Service] TimeoutStartSec=0 Type=notify ExecStart=/usr/bin/cloudflared --protocol http2 --config /etc/cloudflared/config.yaml --no-autoupdate tunnel run <tunnel-name> Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target 使用 Caddy 配合 Cloudflare 插件自动申请 HTTPS 证书 gist.example.com {   reverse_proxy localhost:3700   tls {     dns cloudflare {env.CLOUDFLARE_API_TOKEN}   } } vw.example.com {   reverse_proxy localhost:3701   tls {     dns cloudflare {env.CLOUDFLARE_API_TOKEN}   } } ha.example.com {   reverse_proxy localhost:8123   tls {     dns cloudflare {env.CLOUDFLARE_API_TOKEN}   } } alist.example.com {   reverse_proxy localhost:3703   tls {     dns cloudflare {env.CLOUDFLARE_API_TOKEN}   } } 参考 https://co...

Proxmox VE 直通核显

 参考 https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-passthrough-to-vm https://3os.org/infrastructure/proxmox/gpu-passthrough/igpu-split-passthrough/ 下面这篇文章底下有人评论 https://github.com/fire1ce/3os.org/discussions/111#discussioncomment-9361937 When installing Proxmox and choosing ZFS, GRUB is not used as a bootloader, systemd-boot is. So editing /etc/default/grub will have no effect. You need to edit /etc/kernel/cmdline instead of /etc/default/grub for the kernel parameters. 这里折腾了我好久(

配置 Proxmox VE

 参考 https://songxwn.com/PVE-apt-source/ 删除订阅弹窗 sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service 修改软件源 mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak # 屏蔽订阅企业源 wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg echo "deb https://mirrors.ustc.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list # 使用Proxmox非企业版中科大源 sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list # 将Debian官方源替换为中科大源 echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscriptio...