<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>nekoside</title><description>No description</description><link>https://nekoside.com/</link><templateTheme>Firefly</templateTheme><templateThemeVersion>6.16.8</templateThemeVersion><templateThemeUrl>https://github.com/CuteLeaf/Firefly</templateThemeUrl><lastBuildDate>2026年9月27日 18:05:54</lastBuildDate><item><title>Blue Walkthrough</title><link>https://nekoside.com/posts/blue-writeup/</link><guid isPermaLink="true">https://nekoside.com/posts/blue-writeup/</guid><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅供安全学习，环境均为本地虚拟机或 CTF 靶场。请&lt;strong&gt;勿&lt;/strong&gt;用于未授权目标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://app.hackthebox.com/machines/Blue&quot; target=&quot;_blank&quot;&gt;HTB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OS: Windows&lt;/li&gt;
&lt;li&gt;难度：Easy&lt;/li&gt;
&lt;li&gt;Writeup：已解锁&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;code&gt;/etc/host&lt;/code&gt; 别名：&lt;code&gt;htb&lt;/code&gt;&lt;/p&gt;&lt;p&gt;由于 HTB 连接问题，需要将 &lt;code&gt;tun0&lt;/code&gt; 的 MTU 降低到 1200：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;link&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;dev&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tun0&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;mtu&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;1200&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;p&gt;永恒之蓝（Eternal Blue）由 NSA 开发，利用 Windows 的 SMB（445/TCP）RCE 漏洞 &lt;a href=&quot;https://nvd.nist.gov/vuln/detail/cve-2017-0144&quot; target=&quot;_blank&quot;&gt;CVE-2017-0144&lt;/a&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-wiki-eternalblue&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;（MS17-010）。&lt;/p&gt;&lt;p&gt;后来的勒索软件 WannaCry 就是利用了永恒之蓝&lt;sup&gt;&lt;a href=&quot;#user-content-fn-wiki-zh-wannacry&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;分析&lt;a href=&quot;#分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;侦察（Recon）&lt;a href=&quot;#侦察recon&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmap&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-n&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Pn&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-T4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-O&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;htb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1863&quot; height=&quot;1077&quot; src=&quot;/_astro/Blue-nmap.Bzdhflvz_Z1aQcQF.webp&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;smb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-L&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;htb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-N&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1645&quot; height=&quot;585&quot; src=&quot;/_astro/Blue-smb.CVzCZLxq_1OlrQq.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2554&quot; height=&quot;983&quot; src=&quot;/_astro/Blue-smb-version.C7T-p5Gd_ZWsYGs.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;User Flag&lt;a href=&quot;#user-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;使用 OpenVPN 连接 HTB 的话，LHOST 要设置为 &lt;code&gt;tun0&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1721&quot; height=&quot;897&quot; src=&quot;/_astro/Blue-exp.BysvFCUJ_Z1SWNry.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1348&quot; height=&quot;328&quot; src=&quot;/_astro/Blue-shell.u7Ax-EyV_10odwe.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;注意到 User Flag：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;844&quot; height=&quot;300&quot; src=&quot;/_astro/Blue-user.C0CbA5fn_Z1oLog1.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Root Flag&lt;a href=&quot;#root-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;948&quot; height=&quot;173&quot; src=&quot;/_astro/Blue-root.mman9Ps9_Z8fQrU.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/EternalBlue&quot; target=&quot;_blank&quot;&gt;Wikipedia - EternalBlue&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-wiki-eternalblue&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://zh.wikipedia.org/wiki/WannaCry&quot; target=&quot;_blank&quot;&gt;Wikipedia - WannaCry&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-wiki-zh-wannacry&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Lame Walkthrough</title><link>https://nekoside.com/posts/lame-writeup/</link><guid isPermaLink="true">https://nekoside.com/posts/lame-writeup/</guid><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅供安全学习，环境均为本地虚拟机或 CTF 靶场。请&lt;strong&gt;勿&lt;/strong&gt;用于未授权目标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://app.hackthebox.com/machines/Lame&quot; target=&quot;_blank&quot;&gt;HTB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;难度：Easy&lt;/li&gt;
&lt;li&gt;OS: Linux&lt;/li&gt;
&lt;li&gt;writeup：已解锁&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;p&gt;Lame is an easy Linux machine, requiring only one exploit to obtain root access.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-htb-lame&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;分析&lt;a href=&quot;#分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;侦察&lt;a href=&quot;#侦察&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;nmap&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-A&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;htb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1676&quot; height=&quot;1176&quot; src=&quot;/_astro/Lame-scan.B6ei3qsk_Z1snrGf.webp&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;FTP: 21/TCP, vsftpd 2.3.4&lt;/li&gt;
&lt;li&gt;SSH: 22/TCP, OpenSSH 4.7p1&lt;/li&gt;
&lt;li&gt;OS: Linux&lt;/li&gt;
&lt;li&gt;SMB: 445/TCP, Samba smbd 3.0.20-Debian&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;注意到 vsftpd 2.3.4 存在后门：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;vsftpd 2.3.4 downloaded between 20110630 and 20110703 contains a backdoor which opens a shell on port 6200/tcp.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-cve-2011-2523&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Samba 3.0.20 存在 RCE 漏洞：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;The MS-RPC functionality in smbd in Samba 3.0.0 through 3.0.25rc3 allows remote attackers to execute arbitrary commands via shell metacharacters involving the (1) SamrChangePassword function, when the “username map script” smb.conf option is enabled, and allows remote authenticated users to execute commands via shell metacharacters involving other MS-RPC functions in the (2) remote printer and (3) file share management.&lt;sup&gt;&lt;a href=&quot;#user-content-fn-cve-2007-2447&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;User Flag&lt;a href=&quot;#user-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;msfconsole&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-q&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;发现 vsftpd 的后门没法利用，试试 Samba 的 RCE：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;search&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;samba&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;3.0.20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2170&quot; height=&quot;527&quot; src=&quot;/_astro/Lame-root.5j-T7T4c_k6R4K.webp&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;python&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;import pty; pty.spawn(&apos;/bin/bash&apos;)&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意到 user flag：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;723&quot; height=&quot;287&quot; src=&quot;/_astro/Lame-userflag.B9ZRB7KJ_ZMQKyb.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Root Flag&lt;a href=&quot;#root-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;root flag：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;291&quot; src=&quot;/_astro/Lame-rootflag.Cj1stMO-_emCT6.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;后记&lt;a href=&quot;#后记&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;虽然成功得到了两个 flag，但是最开始的 vsftpd 利用失败了。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;netstat&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-ntpl&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;注意到有很多端口监听 0.0.0.0，但是外部只扫描到 4 个端口：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1160&quot; src=&quot;/_astro/Lame-netstat.BHaK1_NZ_16K81G.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;推测有防火墙，验证：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1367&quot; height=&quot;470&quot; src=&quot;/_astro/Lame-filtered.CQe1nWMN_25pB1K.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;因此即便触发后门，6200 端口也无法连接。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://0xdf.gitlab.io/2020/04/07/htb-lame.html&quot; target=&quot;_blank&quot;&gt;0xdf - HTB: Lame&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://app.hackthebox.com/machines/Lame&quot; target=&quot;_blank&quot;&gt;HTB - Lame&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-htb-lame&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/cve-2011-2523&quot; target=&quot;_blank&quot;&gt;CVE-2011-2523&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-cve-2011-2523&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/cve-2007-2447&quot; target=&quot;_blank&quot;&gt;CVE-2007-2447&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-cve-2007-2447&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>DC-2 Writeup</title><link>https://nekoside.com/posts/dc2/</link><guid isPermaLink="true">https://nekoside.com/posts/dc2/</guid><description>DC-2 靶场的复现与分析。</description><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅供安全学习，环境均为本地虚拟机或 CTF 靶场。请&lt;strong&gt;勿&lt;/strong&gt;用于未授权目标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vulnhub.com/entry/dc-2,311/&quot; target=&quot;_blank&quot;&gt;Vulnhub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.vulnhub.com/author/dcau,610/&quot; target=&quot;_blank&quot;&gt;作者&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;跟 &lt;a href=&quot;/posts/dc1/&quot;&gt;DC-1&lt;/a&gt; 一样，DC-2 也有 5 个 flag&lt;sup&gt;&lt;a href=&quot;#user-content-fn-vulnhub&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&lt;p&gt;注意到作者强调：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Please note that you will need to set the hosts file on your pentesting device to something like:&lt;/p&gt;&lt;p&gt;192.168.0.145 dc-2&lt;/p&gt;&lt;p&gt;Obviously, replace 192.168.0.145 with the actual IP address of DC-2.&lt;/p&gt;&lt;p&gt;It will make life a whole lot simpler (and a certain CMS may not work without it).&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;所以我们要先暂时修改 Kali 的 hosts：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;192.168.78.143 dc-2&apos;&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;tee&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/hosts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;分析&lt;a href=&quot;#分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;侦察&lt;a href=&quot;#侦察&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;nmap 扫描得知：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;OS: Debian&lt;/li&gt;
&lt;li&gt;Kernel: Linux 3.2 - 4.14&lt;/li&gt;
&lt;li&gt;Web Server: Apache httpd 2.4.10&lt;/li&gt;
&lt;li&gt;CMS: WordPress 4.7.10&lt;/li&gt;
&lt;li&gt;开放端口：tcp 80, 7744 (SSH)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;看样子要先从 Web 服务下手。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag1&lt;a href=&quot;#flag1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注意到这个网站使用的是 WordPress（只要你的视力没有问题）：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1029&quot; height=&quot;502&quot; src=&quot;/_astro/DC2-WordPress.-C3dbmUh_it6as.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;第一个 flag 就在首页：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Flag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Flag 1:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Your usual wordlists probably won’t work, so instead, maybe you just need to be cewl.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;More passwords is always better, but sometimes you just can’t win them all.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Log in as one to see the next flag.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;If you can’t find it, log in as another.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag2&lt;a href=&quot;#flag2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注意到 flag1 提到了 &lt;code&gt;cewl&lt;/code&gt;，也许你不认识这个单词，因为这不是个单词…（这里的 cewl 双关了 “cool”）&lt;/p&gt;&lt;p&gt;CeWL&lt;sup&gt;&lt;a href=&quot;https://www.kali.org/tools/cewl/&quot; target=&quot;_blank&quot;&gt;kali&lt;/a&gt;&lt;/sup&gt; 是个自定义字典生成工具：&lt;/p&gt;&lt;a href=&quot;https://github.com/digininja/CeWL&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;digininja&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;CeWL&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;CeWL is a Custom Word List Generator&lt;/div&gt;&lt;div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;no-license&lt;/div&gt;&lt;span&gt;Ruby&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;p&gt;这里明确说普通的字典不好使，所以要我们用 CeWL 制作一个字典来用。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;注意到在这个页面上，我们没有找到任何登录入口。&lt;/p&gt;&lt;p&gt;目录扫描得到：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1861&quot; height=&quot;541&quot; src=&quot;/_astro/DC2-ffuf.C85IcsBc_Z1l3C1M.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;发现了登录界面：&lt;/p&gt;&lt;p&gt;&lt;code&gt;http://dc-2/wp-login.php&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用 WPScan&lt;sup&gt;&lt;a href=&quot;https://www.kali.org/tools/wpscan/&quot; target=&quot;_blank&quot;&gt;kali&lt;/a&gt;&lt;/sup&gt; 扫描得到三个有效用户：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1608&quot; height=&quot;538&quot; src=&quot;/_astro/DC2-users.CwYFbvD1_aFJov.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;接下来制作字典，&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;echo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;admin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;tom&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;jerry&quot;&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;user.txt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;CeWL 可以根据网站内容制作对应的字典&lt;sup&gt;&lt;a href=&quot;#user-content-fn-github-cewl&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cewl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;http://dc-2/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-w&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;password.txt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;通过：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;wpscan&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--url&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;http://dc-2/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--usernames&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--passwords&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;password.txt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;threads&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;得到：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tom&lt;/code&gt; -&amp;gt; &lt;code&gt;parturient&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jerry&lt;/code&gt; -&amp;gt; &lt;code&gt;adipiscing&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;登录后注意到 flag2：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1624&quot; height=&quot;1006&quot; src=&quot;/_astro/DC2-flag2.BgTehcL8_ZNJjyp.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag3&lt;a href=&quot;#flag3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注意到我们可以用 &lt;code&gt;tom&lt;/code&gt; - &lt;code&gt;parturient&lt;/code&gt; 通过 7744 端口登录到其服务器：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;805&quot; height=&quot;474&quot; src=&quot;/_astro/DC2-ssh.BEg7WRVi_Z1gsx15.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;登录 shell 为 rbash，权限受限。且 &lt;code&gt;$PATH&lt;/code&gt; 只有 &lt;code&gt;/home/tom/usr/bin&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;查看 &lt;code&gt;/home/tom/usr/bin&lt;/code&gt; 得知可以使用：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;less&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;查看 &lt;code&gt;flag3.txt&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;flag3.txt&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Poor old Tom is always running after Jerry. Perhaps he should su for all the stress he causes.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;flag3.txt (END)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag4&lt;a href=&quot;#flag4&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;根据 flag3，我们需要用 &lt;code&gt;su&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;配置别名：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;printf &apos;\e[H\e[2J\e[3J&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;l&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;ls --color&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ll&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;ls --color -lh&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;la&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;ls --color -A&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;alias&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lla&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;ls --color -lhA&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;查看其他用户：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;less&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/passwd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1163&quot; height=&quot;170&quot; src=&quot;/_astro/DC2-passwd.hnoTtmAL_1ySL7l.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;通过 &lt;code&gt;vi&lt;/code&gt; 逃逸 &lt;code&gt;rbash&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-gtfobins-vi&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;vi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&apos;:set shell=/bin/bash | shell&apos;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1430&quot; height=&quot;831&quot; src=&quot;/_astro/DC2-flag4.C6AzDB8F_tob0d.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;flag4 提示我们找 git。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag5&lt;a href=&quot;#flag5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;切换到 jerry 账号：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;su&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;jerry&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;密码为之前的：&lt;code&gt;adipiscing&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2168&quot; height=&quot;343&quot; src=&quot;/_astro/DC2-sudo-l.Ci9SQIsj_ZPvckM.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;通过 git 提权到 root：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-gtfobins-git&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;branch&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--help&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;再通过 less 执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;/bin/bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;得到最终 flag：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1153&quot; height=&quot;902&quot; src=&quot;/_astro/DC2-flag5.LVf0ZM56_Z1Sx24S.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hackingarticles.in/dc-2-walkthrough/&quot; target=&quot;_blank&quot;&gt;Raj Chandel’s Blog - DC-2 Walkthrough&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vulnhub.com/entry/dc-2,311/&quot; target=&quot;_blank&quot;&gt;Vulnhub - DC-2&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-vulnhub&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/digininja/CeWL&quot; target=&quot;_blank&quot;&gt;Github - CeWL&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-github-cewl&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gtfobins.org/gtfobins/vi/#shell&quot; target=&quot;_blank&quot;&gt;GTFObins - vi&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-gtfobins-vi&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gtfobins.org/gtfobins/git/#inherit&quot; target=&quot;_blank&quot;&gt;GTFObins - git&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-gtfobins-git&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Node Writeup</title><link>https://nekoside.com/posts/node-writeup/</link><guid isPermaLink="true">https://nekoside.com/posts/node-writeup/</guid><pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅供安全学习，环境均为本地虚拟机或 CTF 靶场。请&lt;strong&gt;勿&lt;/strong&gt;用于未授权目标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;VulnHub: &lt;a href=&quot;https://www.vulnhub.com/entry/node-1,252/&quot; target=&quot;_blank&quot;&gt;VulnHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Author: &lt;a href=&quot;https://www.vulnhub.com/author/rob,593/&quot; target=&quot;_blank&quot;&gt;Rob&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;一共两个 flag：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-vulnhub&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;user&lt;/li&gt;
&lt;li&gt;root&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;分析&lt;a href=&quot;#分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;侦察&lt;a href=&quot;#侦察&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;端口：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;22 SSH&lt;/li&gt;
&lt;li&gt;3000 HTTP&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;user flag&lt;a href=&quot;#user-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注意到 URL：&lt;/p&gt;&lt;p&gt;&lt;code&gt;http://192.168.74.131:3000/api/users&lt;/code&gt;&lt;/p&gt;&lt;p&gt;返回：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;_id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;59a7365b98aa325cc03ee51c&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;myP14ceAdm1nAcc0uNT&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;is_admin&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;_id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;59a7368398aa325cc03ee51d&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;tom&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;f0e2e750791171b0391b682ec35835bd6a5c3f7c8d1d0191451ec77b4d75f240&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;is_admin&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;_id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;59a7368e98aa325cc03ee51e&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;mark&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;de5a1adf4fedcce1533915edc60177547f1057b61b7119fd130e1f7428705f73&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;is_admin&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;_id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;59aa9781cced6f1d1490fce9&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;username&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;rastating&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;password&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;5065db2df0d4ee53562c650c29bacf55b97e231e3fe88570abc9edd8b78ac2f0&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;is_admin&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;密码长度 64 字符，猜测为 SHA-256。&lt;/p&gt;&lt;p&gt;通过 &lt;a href=&quot;https://www.cmd5.com/&quot; target=&quot;_blank&quot;&gt;cmd5&lt;/a&gt; 将 &lt;code&gt;dffc504aa55359b9265cbebe1e4032fe600b64475ae3fd29c07d23223334d0af&lt;/code&gt; 解密为 &lt;code&gt;manchester&lt;/code&gt;，&lt;/p&gt;&lt;p&gt;得到管理员信息：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;账号：&lt;code&gt;myP14ceAdm1nAcc0uNT&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;密码：&lt;code&gt;manchester&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;登录后可以下载一个备份文件：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1643&quot; height=&quot;368&quot; src=&quot;/_astro/Node-backup.Boc6vZrc_Z2lJdNB.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;这个文件没有魔数，不像常见的二进制程序。&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2172&quot; height=&quot;1248&quot; src=&quot;/_astro/Node-vim.B53cYkM8_ZgVEQT.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;Unicode 编码下有：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;大写字母&lt;/li&gt;
&lt;li&gt;小写字母&lt;/li&gt;
&lt;li&gt;数字&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;+&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;一眼 Base64，解码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;base64&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;myplace.backup&lt;/span&gt;&lt;span&gt; &amp;gt; &lt;/span&gt;&lt;span&gt;backup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2199&quot; height=&quot;351&quot; src=&quot;/_astro/Node-unzip.HCBNCqCU_tiR43.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;是一个加密的 zip 压缩包。&lt;/p&gt;&lt;p&gt;刚刚的密码不对，尝试破解压缩包密码：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1634&quot; height=&quot;234&quot; src=&quot;/_astro/Node-unzip-passwd.BXmUhYFZ_ZWB7ik.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;密码为 &lt;code&gt;magicword&lt;/code&gt;，解压后进入备份目录。&lt;/p&gt;&lt;p&gt;在 &lt;code&gt;app.js&lt;/code&gt; 中找到关键信息：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2235&quot; height=&quot;973&quot; src=&quot;/_astro/Node-ssh.Cl3gGkgM_1CpShA.webp&quot; /&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用户名：&lt;code&gt;mark&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;密码：&lt;code&gt;5AYRft73VtFpc84k&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;root flag&lt;a href=&quot;#root-flag&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;连接 ssh 后注意到 mark 不在 &lt;code&gt;sudoers&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;查看机器版本后找到对应 LPE（本地权限提升）漏洞：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2105&quot; height=&quot;1155&quot; src=&quot;/_astro/Node-searchsploit.2NISHG5U_Z12dlVQ.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;使用 &lt;code&gt;scp&lt;/code&gt; 将 exp 复制到 &lt;code&gt;/tmp&lt;/code&gt; 下：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2146&quot; height=&quot;328&quot; src=&quot;/_astro/Node-scp.DzHXkmev_ZzMwVP.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;提权：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1045&quot; height=&quot;615&quot; src=&quot;/_astro/Node-root.BPXYAK6Z_ZQxUMU.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;进入 &lt;code&gt;/root&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;729&quot; height=&quot;429&quot; src=&quot;/_astro/Node-flag.Cm83vuUu_10rudB.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vulnhub.com/entry/node-1,252/&quot; target=&quot;_blank&quot;&gt;VulnHub - Node&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-vulnhub&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>DC-1 Writeup</title><link>https://nekoside.com/posts/dc1/</link><guid isPermaLink="true">https://nekoside.com/posts/dc1/</guid><description>DC-1 靶场的复现与分析。</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;仅供安全学习，环境均为本地虚拟机或 CTF 靶场。请&lt;strong&gt;勿&lt;/strong&gt;用于未授权目标。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;a href=&quot;https://www.vulnhub.com/entry/dc-1,292/&quot; target=&quot;_blank&quot;&gt;Vulnhub&lt;/a&gt;&lt;/p&gt;&lt;p&gt;根据&lt;a href=&quot;https://www.vulnhub.com/author/dcau,610/&quot; target=&quot;_blank&quot;&gt;作者&lt;/a&gt;的介绍，这个靶机一共有五个 flag&lt;sup&gt;&lt;a href=&quot;#user-content-fn-dc-1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;&lt;p&gt;目标是 root shell。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;分析&lt;a href=&quot;#分析&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;nmap 扫描得知：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;OS: Debian&lt;/li&gt;
&lt;li&gt;Kernel: Linux 3.2 - 3.6&lt;/li&gt;
&lt;li&gt;Web Server: Apache httpd 2.2.22&lt;/li&gt;
&lt;li&gt;CMS: Drupal 7&lt;/li&gt;
&lt;li&gt;开放的 TCP 端口：22, 80, 111&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;通过 CVE-2018-7600，使用 &lt;code&gt;msfconsole&lt;/code&gt; 拿到 &lt;code&gt;www-data&lt;/code&gt; 的 shell：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1409&quot; height=&quot;298&quot; src=&quot;/_astro/DC1-shell.CFzVrpAk_Z1vHQrj.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;section&gt;&lt;h2&gt;flag 1&lt;a href=&quot;#flag-1&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;第一个 flag 让我们去找 Drupal 的配置文件：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;273&quot; src=&quot;/_astro/DC1-flag1.BojbxF6K_1IpXSG.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag 2&lt;a href=&quot;#flag-2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;注意到 &lt;code&gt;/var/www/sites/default&lt;/code&gt; 下的 &lt;code&gt;settings.php&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1414&quot; height=&quot;1041&quot; src=&quot;/_astro/DC1-flag2.CgxzII4X_Z1djvK.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;我们可以得到 Drupal 数据库的一个用户名和密码。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag 3&lt;a href=&quot;#flag-3&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;进入数据库后，注意到 flag3：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2486&quot; height=&quot;453&quot; src=&quot;/_astro/DC1-flag3.CcSAvYhc_14zWUB.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;但是乍一看好像没给任何信息？&lt;/p&gt;&lt;p&gt;注意到这个 flag3 对应的 uid 为 1，在 users 表中确认到：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;username: &lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;uid: 1&lt;/li&gt;
&lt;li&gt;对应的密码哈希 &lt;code&gt;$S$DvQI6Y600iNeXRIeEMF94Y6FvN8nujJcEDTCP9nS5.i38jnEKuDR&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;尝试注册一个新用户再通过 SQL 替换密码哈希，结果注册用户要求管理员通过且注册时不能填写密码。所以得找找其他办法。&lt;/p&gt;&lt;p&gt;注意到这个计算密码哈希的脚本：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;www-data@DC-1:/var/www/scripts$ ls password-hash.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;password-hash.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;www-data@DC-1:/var/www/scripts$&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;执行后提示我们：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;To run this script without the --root argument invoke it from the root directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;of your Drupal installation as&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;./scripts/password-hash.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;按照指示运行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;www-data@DC-1:/var/www$ ./scripts/password-hash.sh 123&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;password: 123           hash: $S$DhnR5dwKRomrHLQBklwV4Xb/JjiQIy2NUKwZqhOw5gbQp692NFDn&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;www-data@DC-1:/var/www$&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;得到 &lt;code&gt;123&lt;/code&gt; 的哈希 &lt;code&gt;$S$DhnR5dwKRomrHLQBklwV4Xb/JjiQIy2NUKwZqhOw5gbQp692NFDn&lt;/code&gt;&lt;/p&gt;&lt;p&gt;替换 &lt;code&gt;admin&lt;/code&gt; 密码：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1995&quot; height=&quot;428&quot; src=&quot;/_astro/DC1-change-passwd.CE2gePzL_2ccJs0.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;登录后成功在文章列表中找到 flag3：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1892&quot; height=&quot;783&quot; src=&quot;/_astro/DC1-flag3-content.DP7c1RlQ_Z1GEmPP.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag 4&lt;a href=&quot;#flag-4&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;根据 flag3 的内容：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Special PERMS will help FIND the passwd - but you’ll need to -exec that command to work out how to get what’s in the shadow.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;这里有个双关：shadow 既指“阴影”，又指 &lt;code&gt;/etc/shadow&lt;/code&gt;，同时指引我们使用 &lt;code&gt;-exec&lt;/code&gt; 选项。&lt;/p&gt;&lt;p&gt;Q：但是什么命令有 &lt;code&gt;-exec&lt;/code&gt; 选项呢？&lt;/p&gt;&lt;p&gt;A：注意到我们常用的命令中，&lt;code&gt;find&lt;/code&gt; 带有 &lt;code&gt;-exec&lt;/code&gt; 选项。&lt;/p&gt;&lt;p&gt;&lt;code&gt;find -exec&lt;/code&gt; 确实可以用于执行其他程序，但是通常情况 &lt;code&gt;find&lt;/code&gt; 的权限是 755：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1358&quot; height=&quot;187&quot; src=&quot;/_astro/find.CUoUMNY4_Z1pmlv.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;检查 DC-1 的 &lt;code&gt;find&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1067&quot; height=&quot;159&quot; src=&quot;/_astro/DC1-find.BsuetikU_Z1RhXR0.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;天哪竟然是 SUID，看来是作者故意改的，说明就该用这个。&lt;/p&gt;&lt;p&gt;先看看 &lt;code&gt;/etc/shadow&lt;/code&gt;：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1412&quot; height=&quot;1196&quot; src=&quot;/_astro/DC1-shadow.BGvPqodO_Z2g8sBd.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;发现了 flag4 用户及其家目录，于是：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1248&quot; height=&quot;338&quot; src=&quot;/_astro/DC1-flag4.CC-LonOn_qWfCq.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;flag 5&lt;a href=&quot;#flag-5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;flag4 的内容明示我们找 &lt;code&gt;/root&lt;/code&gt;，众所周知普通用户无权进入 &lt;code&gt;/root&lt;/code&gt;，作者也没给后门，所以…&lt;/p&gt;&lt;p&gt;通过 SUID 的 &lt;code&gt;find&lt;/code&gt; 提权到 root：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-gtfobins-find&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1443&quot; height=&quot;260&quot; src=&quot;/_astro/DC1-find-root.DcblqkEa_Z25WcD9.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;478&quot; src=&quot;/_astro/DC1-flag5.CM6Ym0pj_RePwf.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.vulnhub.com/entry/dc-1,292/&quot; target=&quot;_blank&quot;&gt;VulnHub - DC-1&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-dc-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gtfobins.org/gtfobins/find/#shell&quot; target=&quot;_blank&quot;&gt;GTFOBins - find&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-gtfobins-find&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>修复 XWayland 下的 Fcitx5 输入法</title><link>https://nekoside.com/posts/xwayland-fcitx/</link><guid isPermaLink="true">https://nekoside.com/posts/xwayland-fcitx/</guid><pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;太长不看&lt;a href=&quot;#太长不看&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;QQ&lt;a href=&quot;#qq&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;linuxqq&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ozone-platform=wayland&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--enable-wayland-ime&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Obsidian&lt;a href=&quot;#obsidian&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;obsidian&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--enable-features=UseOzonePlatform&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ozone-platform=wayland&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--enable-wayland-ime&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;截至 2026 年 9 月，KDE、GNOME 等一众 DE 都切换到了 Wayland。而许多软件都没有适配 Wayland，因此这些软件需要借助 XWayland 运行。&lt;/p&gt;&lt;p&gt;但是 XWayland 下，Fcitx5 会无法使用。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;使用 &lt;a href=&quot;https://archlinux.org/packages/extra/x86_64/xorg-xeyes/&quot; target=&quot;_blank&quot;&gt;xorg-xeyes&lt;/a&gt; 包提供的 &lt;code&gt;xeyes&lt;/code&gt; 来判断当前启用的是 X11 / XWayland 还是原生 Wayland。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;Chromium / Electron&lt;a href=&quot;#chromium--electron&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1036&quot; height=&quot;427&quot; src=&quot;/_astro/Electron%E5%8F%82%E6%95%B0.DgbVz01a_Z1HwDYX.webp&quot; /&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--ozone-platform-hint&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;auto&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--enable-wayland-ime&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;你也可以用 &lt;code&gt;--ozone-platform=wayland&lt;/code&gt; 强制指定 Wayland。&lt;/p&gt;&lt;p&gt;其中 &lt;code&gt;--ozone-platform-hint&lt;/code&gt; 是 Chromium 系特有的 Flag，可以用于切换到 Wayland 后端。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;可以使用 &lt;a href=&quot;https://archlinux.org/packages/extra/x86_64/xorg-xeyes/&quot; target=&quot;_blank&quot;&gt;xeyes&lt;/a&gt;&lt;sup&gt;extra&lt;/sup&gt; 判断应用当前是 Wayland 还是 XWayland&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;如果不行可以&lt;strong&gt;追加&lt;/strong&gt;这个参数&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--wayland-text-input-version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果使用终端启动遇到一些带 &lt;code&gt;GPU&lt;/code&gt; 字眼的 &lt;code&gt;ERROR&lt;/code&gt;，可以&lt;strong&gt;追加&lt;/strong&gt;这个参数禁用 GPU 加速&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--disable-gpu-compositing&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或者你发现使用上面的 wayland 参数启动后启动变慢，也可以加上试试，因为这些 &lt;code&gt;ERROR&lt;/code&gt; 会增加启动时间。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;拿 &lt;a href=&quot;https://aur.archlinux.org/packages/linuxqq&quot; target=&quot;_blank&quot;&gt;linuxqq&lt;/a&gt;&lt;sup&gt;aur&lt;/sup&gt; 举例，&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;479&quot; height=&quot;222&quot; src=&quot;/_astro/linuxqq.Befo9ZWX_i4QlW.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;添加参数：&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;73&quot; src=&quot;/_astro/linuxqq-params.DPoMCtD8_XdcEv.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;默认情况下发送到桌面的 &lt;code&gt;.desktop&lt;/code&gt; 来自软件包，位于 &lt;code&gt;/usr/share/applications&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;编辑后的 &lt;code&gt;.desktop&lt;/code&gt; 位于 ~/.local/share/applications 下，所以你需要重新发送到桌面。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Exec&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;linuxqq&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--ozone-platform&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;wayland&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--enable-wayland-ime&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;%U&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;其他支持 Wayland 后端的应用&lt;a href=&quot;#其他支持-wayland-后端的应用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Godot&lt;a href=&quot;#godot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 Godot 编辑器设置中勾选“高级设置”（右上角开关），随后在“运行” -&amp;gt; “平台”中勾选“首选 Wayland”后重启 Godot 即可。&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1027&quot; src=&quot;/_astro/godot-wayland.EYTpk9lX_1RRvNm.webp&quot; /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;普通 X11 应用&lt;a href=&quot;#普通-x11-应用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;以 WPS 为例：&lt;/p&gt;&lt;p&gt;在 KDE 菜单编辑器中为所有 WPS 菜单项添加环境变量：&lt;/p&gt;&lt;p&gt;&lt;code&gt;QT_IM_MODULE=fcitx&lt;/code&gt;&lt;/p&gt;&lt;p&gt;这会在 &lt;code&gt;~/.local/share/applications&lt;/code&gt; 重新生成新的 &lt;code&gt;.desktop&lt;/code&gt; 文件（同时不会影响其他软件）。&lt;/p&gt;&lt;p&gt;已经发送到桌面的需要重新发送一次，否则使用的还是 &lt;code&gt;/usr/share/applications&lt;/code&gt; 的 &lt;code&gt;.desktop&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;由于 &lt;code&gt;~/.local/share/applications&lt;/code&gt; 的搜索优先级高于 &lt;code&gt;/usr/share/applications&lt;/code&gt;，通过 XDG 关联的文件直接打开也应当能工作。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>去掉新建快捷方式的后缀</title><link>https://nekoside.com/posts/lnk-suffix/</link><guid isPermaLink="true">https://nekoside.com/posts/lnk-suffix/</guid><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;环境&lt;a href=&quot;#环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;Windows 11 IoT 企业版 LTSC 24H2&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;方案&lt;a href=&quot;#方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;已知问题：&lt;/p&gt;&lt;p&gt;该方案会导致“发送到桌面快捷方式”错误地发送原文件而非快捷方式（&lt;code&gt;.lnk&lt;/code&gt;）&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;定位到注册表：&lt;code&gt;HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer&lt;/code&gt;&lt;/p&gt;&lt;p&gt;创建项：&lt;code&gt;NamingTemplates&lt;/code&gt;&lt;/p&gt;&lt;p&gt;该项的有效键值对：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RenameNameTemplate&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-howtogeek&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CopyNameTemplate&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-elevenforum&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; 复制后文件的名称&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ShortcutNameTemplate&lt;/code&gt; 新建的快捷方式名称，这才是我们要找的&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;键类型：&lt;code&gt;REG_SZ&lt;/code&gt;（字符串值）&lt;/p&gt;&lt;p&gt;键值中，可以使用 &lt;code&gt;%s&lt;/code&gt; 表示原始文件名称&lt;/p&gt;&lt;p&gt;（新建并）修改 &lt;code&gt;ShortcutNameTemplate&lt;/code&gt; 的值为 &lt;code&gt;%s&lt;/code&gt; 即可去除新快捷方式的文字后缀。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;该修改无需重启，会立即生效&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;网传的另一种方案：修改键 &lt;code&gt;link&lt;/code&gt; 的值为全零，经过测试这种方案在重启后会被系统自动覆写。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.howtogeek.com/715225/change-default-new-folder-name-windows-10/&quot; target=&quot;_blank&quot;&gt;How to Geek&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-howtogeek&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.elevenforum.com/t/change-copy-name-extension-in-windows-11.3065/&quot; target=&quot;_blank&quot;&gt;Eleven Forum&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-elevenforum&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>路由器固件漏洞分析</title><link>https://nekoside.com/posts/router-vulnerability/</link><guid isPermaLink="true">https://nekoside.com/posts/router-vulnerability/</guid><description>从零开始进行路由器固件的漏洞挖掘。</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;环境搭建&lt;a href=&quot;#环境搭建&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;固件提取&lt;a href=&quot;#固件提取&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;UBI&lt;/p&gt;&lt;p&gt;ubireader_extract_images&lt;/p&gt;&lt;p&gt;squashfs 的魔数为：&lt;code&gt;68 73 71 73&lt;/code&gt; (小端序：&lt;code&gt;0x73717368&lt;/code&gt;)&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sfs-magic-kernel&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sfs-magic&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;unblob&lt;a href=&quot;#unblob&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/onekey-sec/unblob&quot; target=&quot;_blank&quot;&gt;unblob&lt;/a&gt; 是更现代的固件提取工具。&lt;/p&gt;&lt;p&gt;安装：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-unblob-github&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;unblob&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装其依赖的外部提取工具：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-unblob-github&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;android-sdk-libsparse-utils&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;e2fsprogs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;p7zip-full&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;unar&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;zlib1g-dev&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;liblzo2-dev&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lzop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lziprecover&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;libhyperscan-dev&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;zstd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lz4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sasquatch&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用该命令验证所有依赖是否满足：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-unblob-github&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unblob&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--show-external-dependencies&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;提取固件：&lt;sup&gt;&lt;a href=&quot;#user-content-fn-unblob-github&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;unblob&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;xxx.bin&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;binwalk&lt;a href=&quot;#binwalk&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;binwalk&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;https://www.kali.org/tools/binwalk/&quot; target=&quot;_blank&quot;&gt;kali&lt;/a&gt;&lt;/sup&gt; (binwalk2) 或
&lt;code&gt;binwalk3&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;https://www.kali.org/tools/binwalk3/&quot; target=&quot;_blank&quot;&gt;kali&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;查看：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;binwalk3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xxx.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;提取：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;binwalk3&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-Me&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xxx.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;得到 squashfs&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;仿真&lt;a href=&quot;#仿真&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;用户态仿真&lt;a href=&quot;#用户态仿真&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;由于路由器往往使用 MIPS 或 ARM 架构，直接 chroot 会出现问题。&lt;/p&gt;&lt;p&gt;安装 &lt;code&gt;qemu-user&lt;/code&gt; 包后可以直接 &lt;code&gt;chroot&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;qemu-user&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;chroot&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./bin/sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;挂载前检查一下 &lt;code&gt;./bin/sh&lt;/code&gt; 有没有执行权限位&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;全系统仿真&lt;a href=&quot;#全系统仿真&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;全系统仿真无需手动挂载文件系统。&lt;/p&gt;&lt;section&gt;&lt;h4&gt;FirmAE&lt;a href=&quot;#firmae&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/pr0v3rbs/FirmAE&quot; target=&quot;_blank&quot;&gt;FirmAE&lt;/a&gt; 本质是 QEMU 全系统仿真，但是替我们做了很多工作。&lt;/p&gt;&lt;p&gt;更换静态 &lt;code&gt;busybox&lt;/code&gt;（FirmAE 会用系统的静态 busybox 替换进仿真环境）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;busybox-static&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;clone&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--recursive&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://github.com/pr0v3rbs/FirmAE.git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cd&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;FirmAE&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./download.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./install.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;安装时可能遇到：&lt;code&gt;Error: Package &apos;uml-utilities&apos; has no installation candidate&lt;/code&gt;，是因为 &lt;a href=&quot;https://pkg.kali.org/pkg/uml-utilities&quot; target=&quot;_blank&quot;&gt;uml-utilities&lt;/a&gt; 包已经被移出 Kali 仓库，&lt;/p&gt;&lt;p&gt;需要另行手动安装该包，否则后面网络模拟会卡住：（FirmAE 用到该包的 &lt;code&gt;tunctl&lt;/code&gt;）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 安装&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;从&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Debian&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;仓库拉取&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;deb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;包后手动安装&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 验证&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--installed&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;uml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./init.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;检查：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./run.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-c&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;名字&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;固件文件&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# 检查过程中日志在 ./scratch/1 下，模拟仿真性能损耗大，时间会比较长&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果检查通过，则可以运行仿真：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;./run.sh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;名字&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;固件文件&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;每次运行后都会挂载 loop 设备，会导致后续重新仿真失败，需要清除之前的挂载：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;lsblk&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;umount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;挂载点&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;losetup&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-d&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;设备&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;FAT&lt;a href=&quot;#fat&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/attify/firmware-analysis-toolkit&quot; target=&quot;_blank&quot;&gt;FAT&lt;/a&gt; 是另一个 IoT 仿真工具。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;qemu-system&lt;/code&gt;&lt;a href=&quot;#qemu-system&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;手动 qemu 整机模拟，比较复杂，需要处理很多工作。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;NVRAM&lt;a href=&quot;#nvram&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Web 服务通常会读写 &lt;code&gt;/proc/nvram&lt;/code&gt; 或 &lt;code&gt;/dev/nvram&lt;/code&gt;，如果没有挂载或对应文件不存在，会导致无法正常启动 Web 服务。&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;proc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;proc&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/proc&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;mount&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ramfs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ramfs&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/var&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/S19init.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;/etc/init.d/S20init.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;FirmAE 会替我们处理好 NVRAM，但是用户态仿真需要手动处理。&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/firmadyne/libnvram&quot; target=&quot;_blank&quot;&gt;libnvram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/zcutlip/nvram-faker&quot; target=&quot;_blank&quot;&gt;nvram-faker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;其他常见方式：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;touch /proc/nvram&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;漏洞挖掘&lt;a href=&quot;#漏洞挖掘&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;Web Server&lt;a href=&quot;#web-server&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;uhttpd&lt;/code&gt; OpenWRT 的默认 Web Server
&lt;a href=&quot;https://openwrt.org/docs/guide-user/services/webserver/http.uhttpd&quot; target=&quot;_blank&quot;&gt;文档&lt;/a&gt;
&lt;a href=&quot;https://git.openwrt.org/project/uhttpd/&quot; target=&quot;_blank&quot;&gt;仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;thttpd&lt;/code&gt;
&lt;a href=&quot;https://github.com/eantcal/thttpd&quot; target=&quot;_blank&quot;&gt;仓库&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jhttpd&lt;/code&gt;
&lt;a href=&quot;https://github.com/bh1xdx/jhttpd&quot; target=&quot;_blank&quot;&gt;仓库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;section&gt;&lt;h3&gt;CGI&lt;a href=&quot;#cgi&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;CGI (Common Gateway Interface)&lt;/strong&gt; 是一种能让 Web 服务器执行外部程序来处理 HTTP(S) 请求的&lt;strong&gt;接口标准&lt;/strong&gt;。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-cgi-wiki&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;在路由器的漏洞挖掘中，我们经常会看到 CGI 关键词&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;逆向工程&lt;a href=&quot;#逆向工程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;346&quot; src=&quot;/_astro/IDA-information.5_Jz1-Z5_1FnW60.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;内存映射&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;996&quot; height=&quot;668&quot; src=&quot;/_astro/IDA-and-Internet.-y55hjzT_1mH2Kj.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;F5 反汇编&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1229&quot; height=&quot;730&quot; src=&quot;/_astro/information2.BJ5H26m3_1Y5S3h.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;使用 IDA 打开后会生成如下文件：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.id0&lt;/code&gt; 主数据库文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.id1&lt;/code&gt; 数据库文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.id2&lt;/code&gt; 数据库文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.nam&lt;/code&gt; 命名列表&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.til &lt;/code&gt; 类型信息库&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;346&quot; src=&quot;/_astro/IDA-information.5_Jz1-Z5_1FnW60.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;导入后左侧的 &lt;code&gt;sub_xxx&lt;/code&gt; 函数是因为 IDA 没有识别到原来的名字&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;426&quot; height=&quot;352&quot; src=&quot;/_astro/function-name.DZEV4EtG_1uw6xK.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;所有紫色背景的函数均为 &lt;code&gt;.extern&lt;/code&gt; 动态链接的。&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;452&quot; height=&quot;272&quot; src=&quot;/_astro/function-bold.Dk7lKDzy_Z2h924t.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;加粗代表该函数有函数原型，例如标准库的 &lt;code&gt;sprintf&lt;/code&gt;, &lt;code&gt;snprintf&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;613&quot; height=&quot;170&quot; src=&quot;/_astro/sprintf.BhgnwAOI_216pLx.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;按下 X 查看所有 Xref (Cross Reference 交叉引用)：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Xrefs To -&amp;gt; 谁引用了我&lt;/li&gt;
&lt;li&gt;Xrefs From -&amp;gt; 我引用了谁&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;section&gt;&lt;h3&gt;汇编&lt;a href=&quot;#汇编&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;由于逆向工程通常使用 Intel 语法，这里统一使用 Intel 语法。&lt;/p&gt;&lt;p&gt;这里只列举 IoT 常见的架构&lt;/p&gt;&lt;a href=&quot;/posts/mips-asm/&quot;&gt;&lt;div&gt;&lt;div&gt;MIPS 汇编&lt;/div&gt;&lt;div&gt;&lt;span&gt;2026-08-29&lt;/span&gt;&lt;span&gt;&lt;span&gt;#MIPS&lt;/span&gt;&lt;span&gt;#汇编&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/magic.h#n21&quot; target=&quot;_blank&quot;&gt;git.kernel.org - magic.h&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-sfs-magic-kernel&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.file-extension.info/format/sfs#magic&quot; target=&quot;_blank&quot;&gt;File-Extension.info - SFS File&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-sfs-magic&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/onekey-sec/unblob&quot; target=&quot;_blank&quot;&gt;Github - unblob&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-unblob-github&quot;&gt;↩&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-unblob-github-2&quot;&gt;↩&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-unblob-github-3&quot;&gt;↩&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-unblob-github-4&quot;&gt;↩&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Common_Gateway_Interface&quot; target=&quot;_blank&quot;&gt;Wikipedia - CGI&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-cgi-wiki&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>解决 Linux 下 Chromium 系浏览器不能用中键滚动</title><link>https://nekoside.com/posts/fix-linux-chromium-middle-scroll/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-linux-chromium-middle-scroll/</guid><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Linux 下 Chromium 系浏览器默认不能用中键滚动，而 Firefox 可以。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;为了避免使用中键时不小心粘贴（如在 claude.ai 中使用中键滚动总是会触发粘贴操作），你可能还需要禁用中键粘贴。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;启用中键滚动&lt;a href=&quot;#启用中键滚动&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;普通 Chromium 系浏览器&lt;a href=&quot;#普通-chromium-系浏览器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--enable-blink-features&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;MiddleClickAutoscroll&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--test-type&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--test-type&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;用于关闭烦人的警告&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Brave / Brave Origin&lt;a href=&quot;#brave--brave-origin&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;启用：&lt;/p&gt;&lt;p&gt;&lt;code&gt;brave://flags/#middle-button-autoscroll&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;Helium&lt;a href=&quot;#helium&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;启用&lt;/p&gt;&lt;p&gt;&lt;code&gt;helium://flags/#middle-click-autoscroll&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;或使用 &lt;code&gt;HeliumMiddleClickAutoscroll&lt;/code&gt; 而非 &lt;code&gt;MiddleClickAutoscroll&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;禁用中键粘贴&lt;a href=&quot;#禁用中键粘贴&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;KDE&lt;a href=&quot;#kde&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;系统设置 -&amp;gt; 工作区 -&amp;gt; 常规行为 -&amp;gt; 取消选择“中键点击：粘贴选中的文本”，后重新启动计算机。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>如何为 VMWare 禁用 Hyper-V</title><link>https://nekoside.com/posts/disable-hyper-v/</link><guid isPermaLink="true">https://nekoside.com/posts/disable-hyper-v/</guid><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;hr /&gt;&lt;p&gt;要验证当前 Hyper-V 是否启用，有两个方法&lt;/p&gt;&lt;section&gt;&lt;h2&gt;VMWare&lt;a href=&quot;#vmware&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;这是最直接，也是我们最关心的方法，在虚拟机的 “Settings” -&amp;gt; “Options” -&amp;gt; “Advanced” -&amp;gt; “Settings” 中，如果出现一个关于“侧通道缓解”的选项，证明当前 VMWare 和 Hyper-V 共存。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;&lt;code&gt;msinfo32&lt;/code&gt;&lt;a href=&quot;#msinfo32&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Win + R 运行 &lt;code&gt;msinfo32&lt;/code&gt;，滑到最下面，如果出现:“已检测到虚拟机监控程序…”，证明当前 Hyper-V 正在运行；&lt;/p&gt;&lt;p&gt;如果是若干个“Hyper-V - xxxx 是”的条目，则证明没有启用。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;禁用 Hyper-V&lt;a href=&quot;#禁用-hyper-v&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;1. 禁用内存完整性&lt;a href=&quot;#1-禁用内存完整性&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在“Windows 安全中心” -&amp;gt; “设备安全性” -&amp;gt; “内核隔离”中禁用“内存完整性”（需要重启生效，等会一并重启即可）&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2. 禁用 Credential Guard&lt;a href=&quot;#2-禁用-credential-guard&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;两种方式二选一，如果你的系统支持组策略，建议优先通过组策略修改。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;组策略&lt;a href=&quot;#组策略&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Win + R 运行 &lt;code&gt;gpedit.msc&lt;/code&gt; 或直接打开本地组策略，在“本地计算机策略” -&amp;gt; “计算机配置” -&amp;gt; “管理模板” -&amp;gt; “系统” -&amp;gt; “Device Guard” 中将“打开基于虚拟化的安全”策略设置为“已禁用”。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;注册表&lt;a href=&quot;#注册表&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;如果你的系统不支持本地组策略，可以直接编辑注册表对应键。&lt;/p&gt;&lt;p&gt;“如果在未启用 UEFI Lock 且未组策略的情况下启用 Credential Guard，则编辑注册表项即可禁用它。”&lt;sup&gt;&lt;a href=&quot;#user-content-fn-credential-guard&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;“删除这些注册表设置可能不会禁用 Credential Guard。 它们必须设置为值 0。”&lt;sup&gt;&lt;a href=&quot;#user-content-fn-credential-guard&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;密钥路径： HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;密钥名称： LsaCfgFlags&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;类型： REG_DWORD&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;值： 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;密钥路径： HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceGuard&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;密钥名称： LsaCfgFlags&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;类型： REG_DWORD&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;值： 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3. &lt;code&gt;bcdedit&lt;/code&gt; 显式关闭&lt;a href=&quot;#3-bcdedit-显式关闭&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;打开管理员 Powershell 或 cmd，执行：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;bcdedit &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;set hypervisorlaunchtype off&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;4. 启用 CPU 的硬件虚拟化支持&lt;a href=&quot;#4-启用-cpu-的硬件虚拟化支持&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 BIOS/UEFI 菜单中，启用对应的 CPU 虚拟化支持&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;AMD: AMD-V&lt;/li&gt;
&lt;li&gt;Intel: VT-x&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;&lt;strong&gt;重启计算机&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;考虑到你的“关机”可能不是真正的“关机”，请直接选择“重启”&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;检验&lt;a href=&quot;#检验&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;现在 VMWare 的虚拟机设置中，刚刚的“侧通道缓解”选项应当消失，且 &lt;code&gt;msinfo32&lt;/code&gt; 的结果也有所不同。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://learn.microsoft.com/zh-cn/troubleshoot/windows-client/application-management/virtualization-apps-not-work-with-hyper-v&quot; target=&quot;_blank&quot;&gt;Microsoft Learn - 虚拟化应用程序不能与 Hyper-V 和基于 Hyper-V 的功能协同工作&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://linux.do/t/topic/104340/18&quot; target=&quot;_blank&quot;&gt;Linux Do&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://learn.microsoft.com/zh-cn/windows/security/identity-protection/credential-guard/configure?tabs=intune#disable-credential-guard&quot; target=&quot;_blank&quot;&gt;Microsoft Learn - 配置 Credential Guard&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-credential-guard&quot;&gt;↩&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-credential-guard-2&quot;&gt;↩&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Arch Linux 安装</title><link>https://nekoside.com/posts/arch-install/</link><guid isPermaLink="true">https://nekoside.com/posts/arch-install/</guid><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Warning&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;由于 Arch Linux 更新频繁，请注意本文的更新时间。&lt;/p&gt;&lt;p&gt;如果你阅读时本文已经过时，请参考下列资源：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://archlinux.org/news/&quot; target=&quot;_blank&quot;&gt;ArchLinux News&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Main_page&quot; target=&quot;_blank&quot;&gt;ArchLinux Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://archlinux.org/packages/&quot; target=&quot;_blank&quot;&gt;ArchLinux Packages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;太长不看 (TL;DR)&lt;a href=&quot;#太长不看-tldr&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;lsblk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cfdisk&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mkfs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mount&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pacstrap&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;linux&lt;/code&gt; 内核&lt;/li&gt;
&lt;li&gt;&lt;code&gt;linux-firmware&lt;/code&gt; 包含很多驱动，例如小螃蟹、Intel 无线网卡驱动&lt;/li&gt;
&lt;li&gt;&lt;code&gt;networkmanager&lt;/code&gt; 网络前端，提供 &lt;code&gt;nmcli&lt;/code&gt; 和 &lt;code&gt;nmtui&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;arch-chroot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grub-install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grub-mkconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;genfstab&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;按需安装如 &lt;code&gt;plasma-meta&lt;/code&gt;, &lt;code&gt;nvidia-open&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;也许下面的内容全都是废话（如果你能熟练地安装 ArchLinux）。倘若真的需要帮助，我大概率会看 &lt;a href=&quot;https://wiki.archlinux.org/&quot; target=&quot;_blank&quot;&gt;ArchWiki&lt;/a&gt; 或者用 &lt;a href=&quot;http://duckduckgo.com/&quot; target=&quot;_blank&quot;&gt;Duckduckgo&lt;/a&gt; 搜索我的问题。&lt;/p&gt;&lt;p&gt;这篇文章产生的原因是我多次在安装完成后忘记修改 root 密码，或是忘记安装 &lt;code&gt;linux-firmware&lt;/code&gt;，又或是没有更新 &lt;code&gt;/etc/fstab&lt;/code&gt;，所以写了上面的“TL;DR”给自己看。&lt;/p&gt;&lt;p&gt;但是只写这些可能无法帮助到正在阅读的你，索性我就写了较为详细的安装过程。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;众所周知，&lt;strong&gt;Arch Linux&lt;/strong&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-arch&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; 是最&lt;strong&gt;激进&lt;/strong&gt;的 Linux 发行版之一，其收录的软件包又&lt;strong&gt;多&lt;/strong&gt;又&lt;strong&gt;新&lt;/strong&gt;。&lt;/p&gt;&lt;p&gt;以 &lt;a href=&quot;https://github.com/Gobidev/pfetch-rs&quot; target=&quot;_blank&quot;&gt;pfetch-rs&lt;/a&gt; 为例，隐藏掉 OpenBSD、FreeBSD、Homebrew 和第三方仓库后，可以看到只有 Arch Linux、Void Linux 和 Alpine 收录了该包。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;叠甲&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;只是随便拿一个比较小众的开源工具举例子，&lt;strong&gt;非引战&lt;/strong&gt;目的，也不是精心设计。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1993&quot; height=&quot;1204&quot; src=&quot;/_astro/pkg-pfetch.0ZstepeL_ZyRKXp.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;然而由于其滚动更新的特点，相比 Debian、CentOS 等发行版，Arch Linux 也更加不稳定。&lt;/p&gt;&lt;p&gt;因此你几乎看不到有服务器使用 Arch Linux。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;Arch Linux 自己的服务器确实使用 Arch Linux。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;详细过程&lt;a href=&quot;#详细过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;如果硬盘空间太小，会导致 &lt;code&gt;pacman -F&lt;/code&gt; 崩溃，原因是 &lt;code&gt;pacman -F&lt;/code&gt; 会使用 &lt;code&gt;/tmp&lt;/code&gt;，而 &lt;code&gt;/tmp&lt;/code&gt; 在 ArchISO 默认使用内存。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;网络&lt;a href=&quot;#网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Arch Linux 的安装需要网络，所以安装的第一步是联网。&lt;/p&gt;&lt;p&gt;如果你使用虚拟机，也许不需要任何配置，检查：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ip&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;section&gt;&lt;h3&gt;有线网络&lt;a href=&quot;#有线网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;无线网络&lt;a href=&quot;#无线网络&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;ArchISO 内置了 &lt;code&gt;iwd&lt;/code&gt; 包，所以我们可以使用 &lt;code&gt;iwctl&lt;/code&gt; 连接无线网络。&lt;/p&gt;&lt;p&gt;解除对无线网卡的锁定：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rfkill&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;rfkill&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;unblock&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;无线网卡编号&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;进入 iwctl：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;iwctl&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;列出无线网卡：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;device&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;list&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;扫描无线网络：&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;分区&lt;a href=&quot;#分区&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;加密&lt;a href=&quot;#加密&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;内核 (Kernel)&lt;a href=&quot;#内核-kernel&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;当然你也可以自己编译内核（&lt;/p&gt;&lt;section&gt;&lt;h3&gt;Arch 官方内核&lt;a href=&quot;#arch-官方内核&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;linux&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;LTS 内核&lt;a href=&quot;#lts-内核&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;linux-lts&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;CachyOS 内核&lt;a href=&quot;#cachyos-内核&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Boot Loader&lt;a href=&quot;#boot-loader&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;本文假定你是 UEFI 引导方式。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;GRUB&lt;a href=&quot;#grub&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;安装 GRUB：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;grub&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;efibootmgr&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grub-install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--bootloader-id&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;GRUB&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--target&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;x86_64-efi&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--efi-directory&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/boot/efi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果你需要多系统引导：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;os-prober&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;编辑 &lt;code&gt;/etc/default/grub&lt;/code&gt;，找到 &lt;code&gt;#GRUB_DISABLE_OS_PROBER=false&lt;/code&gt;，去掉注释。&lt;/p&gt;&lt;p&gt;更新 GRUB 引导条目：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;grub-mkconfig&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/boot/grub/grub.cfg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;systemd-boot&lt;a href=&quot;#systemd-boot&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://wiki.archlinux.org/title/Systemd-boot&quot; target=&quot;_blank&quot;&gt;ArchWiki&lt;/a&gt;&lt;/p&gt;&lt;p&gt;如果你在找一个比 GRUB 更轻量、更 &lt;a href=&quot;https://en.wikipedia.org/wiki/KISS_principle&quot; target=&quot;_blank&quot;&gt;KISS&lt;/a&gt; 的 BL，可以看看 systemd-boot。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Display Manager / Login Manager&lt;a href=&quot;#display-manager--login-manager&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;SDDM&lt;a href=&quot;#sddm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;PLM (Plasma Login Manager)&lt;a href=&quot;#plm-plasma-login-manager&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;GDM&lt;a href=&quot;#gdm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;LightDM&lt;a href=&quot;#lightdm&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;驱动程序&lt;a href=&quot;#驱动程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;网卡&lt;a href=&quot;#网卡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;常见的无线网卡驱动程序包含在 &lt;a href=&quot;https://archlinux.org/packages/core/any/linux-firmware/&quot; target=&quot;_blank&quot;&gt;linux-firmware&lt;/a&gt; 元包中。&lt;/p&gt;&lt;p&gt;如果你希望单独安装：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;联发科 &lt;a href=&quot;https://archlinux.org/packages/core/any/linux-firmware-mediatek/&quot; target=&quot;_blank&quot;&gt;linux-firmware-mediatek&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;瑞昱 &lt;a href=&quot;https://archlinux.org/packages/core/any/linux-firmware-realtek/&quot; target=&quot;_blank&quot;&gt;linux-firmware-realtek&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;显卡&lt;a href=&quot;#显卡&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;AMD&lt;a href=&quot;#amd&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;AMD 显卡驱动 &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd?h=v7.2&quot; target=&quot;_blank&quot;&gt;amdgpu&lt;/a&gt; 包含在内核树中，无需单独安装。&lt;/p&gt;&lt;p&gt;安装 Vulkan 驱动：&lt;code&gt;vulkan-radeon&lt;/code&gt;（不装的话 Zed 等应用无法使用 A 卡的 Vulkan，可能回退到独显）&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;Intel&lt;a href=&quot;#intel&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;安装 Vulkan 驱动：&lt;code&gt;vulkan-intel&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;NVIDIA&lt;a href=&quot;#nvidia&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;NVIDIA 开源显卡驱动 &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau?h=v7.2&quot; target=&quot;_blank&quot;&gt;nouveau&lt;/a&gt; 也包含在内核树中。
如果你需要更好的性能和兼容，可以安装 NVIDIA 私有驱动 &lt;a href=&quot;https://archlinux.org/packages/extra/x86_64/nvidia-open/&quot; target=&quot;_blank&quot;&gt;nvidia-open&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;&lt;code&gt;nvidia-open&lt;/code&gt; 会自动拉取 &lt;code&gt;nvidia-utils&lt;/code&gt;，后者包含了 Vulkan 实现，所以只需要安装一个 &lt;code&gt;nvidia-open&lt;/code&gt; 包既可。&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;桌面环境 (Desktop Environment)&lt;a href=&quot;#桌面环境-desktop-environment&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;KDE Plasma&lt;a href=&quot;#kde-plasma&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;plasma&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plasma-desktop&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;plasma-meta&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;配置&lt;a href=&quot;#配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;dotfiles&lt;a href=&quot;#dotfiles&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;个人推荐使用 &lt;a href=&quot;https://www.chezmoi.io/&quot; target=&quot;_blank&quot;&gt;chezmoi&lt;/a&gt; 管理 dotfiles：&lt;/p&gt;&lt;a href=&quot;https://github.com/twpayne/chezmoi&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;twpayne&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;chezmoi&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Manage your dotfiles across multiple diverse machines, securely.&lt;/div&gt;&lt;div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;MIT&lt;/div&gt;&lt;span&gt;Go&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://archlinux.org/&quot; target=&quot;_blank&quot;&gt;Arch Linux&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-arch&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>x86 与 x64 汇编入门</title><link>https://nekoside.com/posts/asm-x86/</link><guid isPermaLink="true">https://nekoside.com/posts/asm-x86/</guid><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;概念&lt;a href=&quot;#概念&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;x86 是一种 CPU 指令集架构（ISA），定义了一套指令集（Instruction Set）。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-isa&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/X86_assembly_language&quot; target=&quot;_blank&quot;&gt;x86 汇编&lt;/a&gt;是这套指令集的指令的人类可读表示。一条汇编语句通常对应一条机器码。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-asm&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;语法&lt;a href=&quot;#语法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;类别&lt;a href=&quot;#类别&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/X86_assembly_language#Syntax&quot; target=&quot;_blank&quot;&gt;x86 汇编语法&lt;/a&gt;通常有两种：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;AT&amp;amp;T&lt;/li&gt;
&lt;li&gt;Intel&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本文使用 AT&amp;amp;T 语法&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;我们的 CPU 只关心机器码，但是不同的汇编器仅支持特定的语法（类似 Assembler 和 Compiler 的关系）。&lt;/p&gt;&lt;p&gt;常见的三种汇编器：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/GNU_Assembler&quot; target=&quot;_blank&quot;&gt;GNU Assembler&lt;/a&gt; (GAS) &lt;code&gt;as&lt;/code&gt; -&amp;gt; AT&amp;amp;T 语法
&lt;ul&gt;
&lt;li&gt;scoop: &lt;code&gt;gcc&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Netwide_Assembler&quot; target=&quot;_blank&quot;&gt;Netwide Assembler&lt;/a&gt; (NASM) -&amp;gt; Intel 语法
&lt;ul&gt;
&lt;li&gt;scoop: &lt;code&gt;nasm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler&quot; target=&quot;_blank&quot;&gt;Microsoft Macro Assembler&lt;/a&gt; (MASM) -&amp;gt; Intel 语法&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;语法不能够混用，例如使用 NASM 去汇编一个 AT&amp;amp;T 语法的汇编文件会遇到诸如“error: instruction expected”的报错。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;特点&lt;a href=&quot;#特点&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;换行严格（毕竟没有分号之类的东西），一行就是一条语句&lt;/li&gt;
&lt;li&gt;空格、缩进宽松。有没有都可以；用哪个都可以&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;结构&lt;a href=&quot;#结构&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;将&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;test.c&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;使用 &lt;code&gt;gcc -S -O0 -fno-asynchronous-unwind-tables -fno-ident&lt;/code&gt; 编译可得如下汇编代码：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;test.s&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.file  &quot;&lt;/span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;.c&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;.text&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.globl  main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.type  main, @function&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;main:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pushq  %&lt;/span&gt;&lt;span&gt;rbp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;  %&lt;/span&gt;&lt;span&gt;rsp&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rbp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl  &lt;/span&gt;&lt;span&gt;$0&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;eax&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;popq  %&lt;/span&gt;&lt;span&gt;rbp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ret&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.size  main, .-main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.section  .note.GNU-stack,&quot;&quot;,@progbits&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;删除其中的无用信息得到：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;test.s&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.globl  main&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;main:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl  &lt;/span&gt;&lt;span&gt;$0&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;eax&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ret&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;观察上述汇编代码，可以发现有三种语句：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;指令：&lt;code&gt;movl $0, %eax&lt;/code&gt;, &lt;code&gt;ret&lt;/code&gt; 等，其中 &lt;code&gt;movl&lt;/code&gt;, &lt;code&gt;ret&lt;/code&gt; 称为指令助记符 (Instruction Mnemonic) 或助记符。&lt;/li&gt;
&lt;li&gt;伪指令 (directive)：&lt;code&gt;.file&lt;/code&gt;, &lt;code&gt;.text&lt;/code&gt;, &lt;code&gt;.size&lt;/code&gt;，以 &lt;code&gt;.&lt;/code&gt; 开头。&lt;/li&gt;
&lt;li&gt;标签：&lt;code&gt;main:&lt;/code&gt;，对应 C 的 &lt;code&gt;goto&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;以及：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;立即数：&lt;code&gt;$0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;寄存器：&lt;code&gt;%eax&lt;/code&gt;，&lt;code&gt;%rbp&lt;/code&gt; 等&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;将精简后的代码进行汇编：&lt;/p&gt;&lt;p&gt;&lt;code&gt;as test.s -o test.o&lt;/code&gt;&lt;/p&gt;&lt;p&gt;可得到对应目标文件&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;file test.o&lt;/code&gt;&lt;/p&gt;&lt;p&gt;test.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;p&gt;不涉及物理地址的低级代码称为&lt;strong&gt;可重定位的 (relocatable)&lt;/strong&gt;。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E8%A6%81%E7%B4%A0&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;45&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;汇编得到的目标文件无法执行，还需要进行链接：&lt;/p&gt;&lt;p&gt;&lt;code&gt;gcc test.o -o test&lt;/code&gt;&lt;/p&gt;&lt;p&gt;但由于程序真正的入口点是 &lt;code&gt;_start&lt;/code&gt;，上述操作本质上 gcc 帮我们封装了一层，用 &lt;code&gt;_start&lt;/code&gt; 调用我们写的 &lt;code&gt;main&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;下面绕过 C 标准库，将 &lt;code&gt;main&lt;/code&gt; 改写为 &lt;code&gt;_start&lt;/code&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;test.s&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.globl  _start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_start:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl  &lt;/span&gt;&lt;span&gt;$60&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;eax&lt;/span&gt;&lt;span&gt; # 指定操作为退出&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl  &lt;/span&gt;&lt;span&gt;$0&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;edi&lt;/span&gt;&lt;span&gt; # 指定退出码为 0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;注释：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;AT&amp;amp;T -&amp;gt; &lt;code&gt;#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Intel -&amp;gt; &lt;code&gt;;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;部分汇编器支持 C 风格注释 -&amp;gt; &lt;code&gt;//&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;ld test.o -o test&lt;/code&gt;&lt;/p&gt;&lt;p&gt;执行：&lt;/p&gt;&lt;p&gt;&lt;code&gt;./test&lt;/code&gt;&lt;/p&gt;&lt;section&gt;&lt;h2&gt;指令&lt;a href=&quot;#指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;x86 汇编基础的助记符有几十个。&lt;/p&gt;&lt;p&gt;&lt;u&gt;在 AT&amp;amp;T 中&lt;/u&gt;，助记符的后缀：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;q&lt;/code&gt; 代表 64 位，如 &lt;code&gt;movq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;l&lt;/code&gt; 代表 32 位，如 &lt;code&gt;movl&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;具体如下：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;后缀&lt;/th&gt;&lt;th&gt;全称&lt;/th&gt;&lt;th&gt;宽度/字节&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;byte&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;w&lt;/td&gt;&lt;td&gt;word&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;l&lt;/td&gt;&lt;td&gt;long&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;q&lt;/td&gt;&lt;td&gt;quad&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;AT&amp;amp;T 中，指令的操作数顺序：&lt;code&gt;OP src, dest&lt;/code&gt;&lt;/p&gt;&lt;p&gt;例如：&lt;code&gt;movl $0, %eax&lt;/code&gt; 将 0 放入 eax 寄存器&lt;/p&gt;&lt;p&gt;其中，&lt;code&gt;$0&lt;/code&gt; 和 &lt;code&gt;%eax&lt;/code&gt; 分别为这条指令的两个操作数。&lt;/p&gt;&lt;p&gt;操作数又可以分为：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;直接操作数&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;立即数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如 &lt;code&gt;$0&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寄存器操作数&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如 &lt;code&gt;%eax&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;间接操作数&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;如 &lt;code&gt;(%rbx)&lt;/code&gt;&lt;/p&gt;&lt;section&gt;&lt;h3&gt;数据传送&lt;a href=&quot;#数据传送&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;mov&lt;/code&gt;&lt;a href=&quot;#mov&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;算数&lt;a href=&quot;#算数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;add&lt;/code&gt;&lt;a href=&quot;#add&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;mul&lt;/code&gt;&lt;a href=&quot;#mul&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;堆栈&lt;a href=&quot;#堆栈&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;push&lt;/code&gt;&lt;a href=&quot;#push&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;pop&lt;/code&gt;&lt;a href=&quot;#pop&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;其他指令&lt;a href=&quot;#其他指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;lea&lt;/code&gt;&lt;a href=&quot;#lea&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;code&gt;lea&lt;/code&gt; 返回间接操作数的地址。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;248&lt;/sup&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;伪指令&lt;a href=&quot;#伪指令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;默认情况下，伪指令不区分大小写。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;45&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;.file&lt;/code&gt;&lt;a href=&quot;#file&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;文件元信息&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;.globl&lt;/code&gt;&lt;a href=&quot;#globl&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;.type&lt;/code&gt;&lt;a href=&quot;#type&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;类型标注，告诉编译工具这个符号是什么类型，如 &lt;code&gt;.type main, @function&lt;/code&gt; 描述 &lt;code&gt;main&lt;/code&gt; 为一个函数。&lt;/p&gt;&lt;p&gt;只是描述性信息，多数情况下可以删除。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;.size&lt;/code&gt;&lt;a href=&quot;#size&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;大小标注&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h4&gt;&lt;code&gt;.ident&lt;/code&gt;&lt;a href=&quot;#ident&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;编译器版本标注&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Processor_register&quot; target=&quot;_blank&quot;&gt;寄存器&lt;/a&gt;&lt;a href=&quot;#寄存器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;通用目的寄存器&lt;a href=&quot;#通用目的寄存器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;G&lt;/strong&gt;eneral-&lt;strong&gt;P&lt;/strong&gt;urpose &lt;strong&gt;R&lt;/strong&gt;egister&lt;strong&gt;s&lt;/strong&gt; (GPRs)&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;rax 是完整的 64 位寄存器，eax 是其低 32 位寄存器，ax 是其低 16 位寄存器，&lt;/p&gt;&lt;p&gt;ah 是其 8-15 位寄存器，al 是其低 8 位寄存器。&lt;/p&gt;&lt;p&gt;后面不再赘述。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;rax&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rbx&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rbp -&amp;gt; 基址指针 (&lt;strong&gt;B&lt;/strong&gt;ase &lt;strong&gt;P&lt;/strong&gt;ointer)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rsp -&amp;gt; 栈指针 (&lt;strong&gt;S&lt;/strong&gt;tack &lt;strong&gt;P&lt;/strong&gt;ointer)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rdi -&amp;gt; (&lt;strong&gt;D&lt;/strong&gt;estination &lt;strong&gt;I&lt;/strong&gt;ndex)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;其他寄存器&lt;a href=&quot;#其他寄存器&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;rip -&amp;gt; 指令指针 (&lt;strong&gt;I&lt;/strong&gt;nstruction &lt;strong&gt;P&lt;/strong&gt;ointer)，即程序计数器 PC&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;段&lt;a href=&quot;#段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;段声明表示从下面的内容开始，一直到下一个段声明，中间的内容都归入该段。&lt;/p&gt;&lt;p&gt;&lt;code&gt;.section&lt;/code&gt; 用于声明段，例如：&lt;/p&gt;&lt;p&gt;&lt;code&gt;.section .text&lt;/code&gt; 声明一个代码段，通常简写为 &lt;code&gt;.text&lt;/code&gt;。&lt;/p&gt;&lt;section&gt;&lt;h2&gt;代码段&lt;a href=&quot;#代码段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在 AT&amp;amp;T 中代码段为 &lt;code&gt;.text&lt;/code&gt;，在 Intel 风格中为 &lt;code&gt;.code&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;只读数据段&lt;a href=&quot;#只读数据段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;.rodata&lt;/code&gt;，最常见的用途为字符串常量存储。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;未初始化数据段&lt;a href=&quot;#未初始化数据段&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;通常用 &lt;code&gt;.bss&lt;/code&gt; 表示。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;起始于 IBM 704 汇编中“块存储开始 (Block Storage Start)”首字母缩写。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-csapp&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;468&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;约定&lt;a href=&quot;#约定&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;返回值&lt;a href=&quot;#返回值&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;程序真正的入口是 &lt;code&gt;_start&lt;/code&gt; 而非 &lt;code&gt;main&lt;/code&gt;：&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;_start&lt;/code&gt; 调用 &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt; 将返回值 0 写入 &lt;code&gt;%eax&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;main&lt;/code&gt; &lt;code&gt;ret&lt;/code&gt; 返回&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_start&lt;/code&gt; 从 &lt;code&gt;%eax&lt;/code&gt; 拿到返回值&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;整数、指针 -&amp;gt; &lt;code&gt;%rax&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;参数&lt;a href=&quot;#参数&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-x64-abi&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;26&lt;/sup&gt;&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;第一个参数 -&amp;gt; &lt;code&gt;%rdi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;第二个参数 -&amp;gt; &lt;code&gt;%rsi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;第三个参数 -&amp;gt; &lt;code&gt;%rdx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;第四个参数 -&amp;gt; &lt;code&gt;%rcx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;第五个参数 -&amp;gt; &lt;code&gt;%r8&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;第六个参数 -&amp;gt; &lt;code&gt;%r9&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;编写程序&lt;a href=&quot;#编写程序&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;系统调用&lt;a href=&quot;#系统调用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;系统调用是内核提供的接口，我们可以通过汇编直接调用系统调用而不经过任何高级封装。&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;在 x86 下，系统调用由 0x80 中断完成，各个通用寄存器用于传递参数，EAX 寄存器用于表示系统调用的接口号。&lt;sup&gt;&lt;a href=&quot;#user-content-fn-%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB&quot;&gt;7&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;385&lt;/sup&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;现代的 x64 架构提供了专门的系统调用指令，分别用于从用户态到内核态、从内核态返回用户态，以下是支持情况：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;指令&lt;/th&gt;&lt;th&gt;AMD Legacy&lt;/th&gt;&lt;th&gt;AMD Compat&lt;/th&gt;&lt;th&gt;AMD 64位&lt;/th&gt;&lt;th&gt;Intel Legacy&lt;/th&gt;&lt;th&gt;Intel Compat&lt;/th&gt;&lt;th&gt;Intel 64位&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;syscall&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-apm&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;174&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sdm&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;698&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;sysret&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-apm&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;174&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sdm&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;708&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;❌&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;sysenter&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-apm&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;176&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sdm&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;701&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌ (#UD)&lt;/td&gt;&lt;td&gt;❌ (#UD)&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;sysexit&lt;/code&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-apm&quot;&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;176&lt;/sup&gt;&lt;sup&gt;&lt;a href=&quot;#user-content-fn-sdm&quot;&gt;9&lt;/a&gt;&lt;/sup&gt;&lt;sup&gt;705&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;❌ (#UD)&lt;/td&gt;&lt;td&gt;❌ (#UD)&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;td&gt;✅&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;以 Linux 7.1 为例，系统调用号写在 &lt;a href=&quot;https://github.com/torvalds/linux/blob/v7.1/arch/x86/entry/syscalls/syscall_64.tbl&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;arch/x86/entry/syscalls/syscall_64.tbl&lt;/code&gt;&lt;/a&gt; 中，具体的函数原型在各自的内核源码中。&lt;/p&gt;&lt;p&gt;编写汇编时要查看系统调用的参数等信息，可以查阅&lt;a href=&quot;https://x64.syscall.sh/&quot; target=&quot;_blank&quot;&gt;该网站&lt;/a&gt;。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;要在 C/C++ 中调用系统调用，可以包含头文件 &lt;code&gt;unistd.h&lt;/code&gt;&lt;/p&gt;&lt;p&gt;要查阅系统调用信息，可以直接查看 man 手册：&lt;code&gt;man 2 read&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;目前有五百多个，这里列出几个常见的：&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;系统调用号&lt;/th&gt;&lt;th&gt;系统调用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;read&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;write&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;open&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;close&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;57&lt;/td&gt;&lt;td&gt;fork&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;60&lt;/td&gt;&lt;td&gt;exit&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;调用一个系统调用：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$系统调用号&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rax&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$第一个参数&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rdi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$第二个参数&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rsi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;Hello World&lt;a href=&quot;#hello-world&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;section    .rodata&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;LC0:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.ascii    &quot;Hello World!\n&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;len = . - .LC0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;.text&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.globl    _start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_start:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$1&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rax&lt;/span&gt;&lt;span&gt; # write&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$1&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rdi&lt;/span&gt;&lt;span&gt; # 文件描述符 fd&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;leaq    .LC0(%&lt;/span&gt;&lt;span&gt;rip&lt;/span&gt;&lt;span&gt;), %&lt;/span&gt;&lt;span&gt;rsi&lt;/span&gt;&lt;span&gt; # buffer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$len&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rdx&lt;/span&gt;&lt;span&gt; # count&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$60&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rax&lt;/span&gt;&lt;span&gt; # exit&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movq&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$0&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;rdi&lt;/span&gt;&lt;span&gt; # exit code&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;反汇编&lt;a href=&quot;#反汇编&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;十六进制&lt;a href=&quot;#十六进制&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;对于程序：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;.globl _start&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;_start:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl    &lt;/span&gt;&lt;span&gt;$60&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;eax&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;movl    &lt;/span&gt;&lt;span&gt;$0&lt;/span&gt;&lt;span&gt;, %&lt;/span&gt;&lt;span&gt;edi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;编译后要查看其十六进制形式，有如下工具：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;xxd -&amp;gt; vim 包提供&lt;/li&gt;
&lt;li&gt;hexdump -&amp;gt; util-linux 包提供&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Od_(Unix)&quot; target=&quot;_blank&quot;&gt;od&lt;/a&gt; -&amp;gt; Unix，coreutils 包提供&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/sharkdp/hexyl&quot; target=&quot;_blank&quot;&gt;hexyl&lt;/a&gt; -&amp;gt; 现代工具，需要从 ArchLinux 官方仓库安装&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;汇编&lt;a href=&quot;#汇编&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;要查看其汇编码，需要进行反汇编。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;objdump&lt;a href=&quot;#objdump&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;objdump -d test&lt;/code&gt;&lt;/p&gt;&lt;p&gt;输出：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;test&lt;/span&gt;&lt;span&gt;：     文件格式 elf64-x86-&lt;/span&gt;&lt;/span&gt;&lt;span&gt;64&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Disassembly of &lt;/span&gt;&lt;span&gt;section .text&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;0000000000401000&lt;/span&gt;&lt;span&gt; &amp;lt;_start&amp;gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;401000&lt;/span&gt;&lt;span&gt;:  b8 3c &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;mov&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$0x3c&lt;/span&gt;&lt;span&gt;,%&lt;/span&gt;&lt;/span&gt;&lt;span&gt;eax&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;401005&lt;/span&gt;&lt;span&gt;:  bf &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;00&lt;/span&gt;&lt;span&gt;&lt;span&gt;         &lt;/span&gt;&lt;span&gt;mov&lt;/span&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$0x0&lt;/span&gt;&lt;span&gt;,%&lt;/span&gt;&lt;/span&gt;&lt;span&gt;edi&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;40100a:&lt;/span&gt;&lt;span&gt;  0f &lt;/span&gt;&lt;span&gt;05&lt;/span&gt;&lt;span&gt;&lt;span&gt;                  &lt;/span&gt;&lt;span&gt;syscall&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;radare2&lt;a href=&quot;#radare2&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;现代的 CLI 逆向工具 &lt;a href=&quot;https://github.com/radareorg/radare2&quot; target=&quot;_blank&quot;&gt;radare2&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;进入交互式 shell：&lt;/p&gt;&lt;p&gt;&lt;code&gt;r2 -A test&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;pdf&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;r2 默认显示 Intel 风格，要切换为 AT&amp;amp;T：&lt;code&gt;e asm.syntax=att&lt;/code&gt;（该命令仅在当前会话生效）。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Instruction_set_architecture#Overview&quot; target=&quot;_blank&quot;&gt;Instruction set architecture - Wikipedia&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-isa&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Assembly_language&quot; target=&quot;_blank&quot;&gt;Assembly language - Wikipedia&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-asm&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nisan N, Schocken S. 计算机系统要素: 如何从头构建一台现代计算机[M]. 李清安, 龚奕利, 译. 原书第2版. 北京: 机械工业出版社, 2024. &lt;a href=&quot;#user-content-fnref-%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E8%A6%81%E7%B4%A0&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Irvine K R. 汇编语言: 基于 x86 处理器[M]. 吴为民, 译. 原书第8版. 北京: 机械工业出版社, 2021. &lt;a href=&quot;#user-content-fnref-%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80&quot;&gt;↩&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80-2&quot;&gt;↩&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bryant R E, O’Hallaron D R. 深入理解计算机系统[M]. 龚奕利, 贺莲, 译. 原书第3版. 北京: 机械工业出版社, 2016. &lt;a href=&quot;#user-content-fnref-csapp&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lu H J, Matz M, Girkar M, 等. System V Application Binary Interface AMD64 Architecture Processor Supplement[S]. 1.0. 2025. &lt;a href=&quot;#user-content-fnref-x64-abi&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;俞甲子, 石凡, 潘爱民. 程序员的自我修养: 链接、装载与库[M]. 北京: 电子工业出版社, 2009. &lt;a href=&quot;#user-content-fnref-%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E8%87%AA%E6%88%91%E4%BF%AE%E5%85%BB&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Advanced Micro Devices, Inc. AMD64 Architecture Programmer’s Manual Volume 2: System Programming[Z]. Revision 3.44. 2026. &lt;a href=&quot;#user-content-fnref-apm&quot;&gt;↩&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-apm-2&quot;&gt;↩&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-apm-3&quot;&gt;↩&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-apm-4&quot;&gt;↩&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Intel Corporation. Intel® 64 and IA-32 Architectures Software Developer Manual Volume 2: Instruction Set Reference 2B[Z]. 2026. &lt;a href=&quot;#user-content-fnref-sdm&quot;&gt;↩&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-sdm-2&quot;&gt;↩&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-sdm-3&quot;&gt;↩&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-sdm-4&quot;&gt;↩&lt;sup&gt;4&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>家目录下神秘出现的 .sys1og.conf</title><link>https://nekoside.com/posts/%E8%AE%B0%E5%BD%95/sys1ogconf/</link><guid isPermaLink="true">https://nekoside.com/posts/%E8%AE%B0%E5%BD%95/sys1ogconf/</guid><description>等等！为什么这儿有个 .sys1og.conf？</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;背景&lt;a href=&quot;#背景&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;今天突然发现用户家目录下有一个 &lt;code&gt;.sys1og.conf&lt;/code&gt; 文件，非常可疑：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;用 sys1og 替换 syslog&lt;/li&gt;
&lt;li&gt;是 dotfile&lt;/li&gt;
&lt;li&gt;通过 &lt;code&gt;pacman -Qo ~/.sys1og.conf&lt;/code&gt; 得知没有软件包认领该文件&lt;/li&gt;
&lt;li&gt;根本不知道是什么文件，也不知道是什么时候出现的&lt;/li&gt;
&lt;li&gt;内容是一行 UUID&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;但 &lt;code&gt;stat .sys1og.conf&lt;/code&gt; 显示其被创建后从未被访问过，且没有执行权限，很是神秘。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;线索&lt;a href=&quot;#线索&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;经过本地排查无果，Google 搜索得到一条有用信息：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://2o181o28.github.io/2024/08/30/Ubuntu%E5%8D%87%E7%BA%A7%E8%87%B324.04/#%E5%BE%AE%E4%BF%A1&quot; target=&quot;_blank&quot;&gt;cosmicAC 的博客&lt;/a&gt;（谢谢你）&lt;/p&gt;&lt;p&gt;通过该文章得知这个 &lt;code&gt;.sys1og.conf&lt;/code&gt; 大概率是微信产生的。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;验证&lt;a href=&quot;#验证&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;&lt;code&gt;pacman.log&lt;/code&gt;&lt;a href=&quot;#pacmanlog&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;于是我去检查了 &lt;code&gt;/var/log/pacman.log&lt;/code&gt;，综合上面的 &lt;code&gt;stat .sys1og.conf&lt;/code&gt; 得到如下信息：&lt;/p&gt;&lt;p&gt;微信安装时间&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[某一天T22:09:58+0800] [ALPM] installed wechat-bin (4.1.1.4-1)&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;该文件创建时间&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;创建时间：同一天 22:10:53.516000051 +0800&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;中间间隔约一分钟&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;复现&lt;a href=&quot;#复现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cat -A .sys1og.conf&lt;/code&gt; 得知该文件没什么用，并且从创建之后都没有被修改过，索性删除。打开微信，文件重新被创建，得以验证。&lt;/p&gt;&lt;p&gt;微信应该是启动时检查该文件是否存在，不存在就创建，存在就跳过。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;环境&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;
&lt;li&gt;ArchLinux&lt;/li&gt;
&lt;li&gt;x86_64&lt;/li&gt;
&lt;li&gt;7.1.3-arch1-2&lt;/li&gt;
&lt;li&gt;Wayland&lt;/li&gt;
&lt;li&gt;KDE Plasma 6.7.2&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;得知 AUR 的 &lt;code&gt;wechat-bin&lt;/code&gt; 版本 &lt;code&gt;4.1.1.4-1&lt;/code&gt; 至 &lt;code&gt;4.1.1.7-1&lt;/code&gt; 均会在每次重新启动微信进程时检查该文件。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;微信，我***&lt;/strong&gt;。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>解决 Wayland 下 Chromium 系浏览器颜色偏浅</title><link>https://nekoside.com/posts/wayland-chromium-color/</link><guid isPermaLink="true">https://nekoside.com/posts/wayland-chromium-color/</guid><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;诊断&lt;a href=&quot;#诊断&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;使用任意屏幕拾色器如 &lt;a href=&quot;https://apps.kde.org/kcolorchooser/&quot; target=&quot;_blank&quot;&gt;KColorChooser&lt;/a&gt; 在任意 Github 仓库页面如 &lt;a href=&quot;https://github.com/torvalds/linux&quot; target=&quot;_blank&quot;&gt;linux&lt;/a&gt; 两侧黑色背景进行拾色，正常值应为 &lt;code&gt;#0d1117&lt;/code&gt;，若拾取到其他值，则存在偏色（或可与 Firefox 对比，肉眼可见 Chromium 的颜色更浅）。&lt;/p&gt;&lt;p&gt;是 Chromium 上游已知问题：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://issues.chromium.org/issues/476172415&quot; target=&quot;_blank&quot;&gt;https://issues.chromium.org/issues/476172415&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;临时解决方案&lt;a href=&quot;#临时解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;--disable-features&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;WaylandWpColorManagerV1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;随后重新进行拾色，得到的值应为 &lt;code&gt;#0d1117&lt;/code&gt;。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>修复 fontconfig 显示繁体字形</title><link>https://nekoside.com/posts/fix-fontconfig-cht/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-fontconfig-cht/</guid><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;问题描述&lt;a href=&quot;#问题描述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;环境&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;ArchLinux&lt;/li&gt;
&lt;li&gt;KDE Plasma 6.7.0&lt;/li&gt;
&lt;li&gt;Wayland&lt;/li&gt;
&lt;li&gt;fontconfig 2.18.1&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;解决方案来自 ArchLinux CN tg 群组：银河-蜗牛&lt;/p&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;风险操作&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;code&gt;sudo rm&lt;/code&gt; 前请再三检查&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/etc/fonts/conf.d/48-guessfamily.conf&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;确定要删除的文件后输入 &lt;code&gt;yes&lt;/code&gt;&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;fc-cache&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-f&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后重启打开应用程序。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>KDE 开机自动启用 NumLock</title><link>https://nekoside.com/posts/kde-numlock/</link><guid isPermaLink="true">https://nekoside.com/posts/kde-numlock/</guid><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;环境&lt;a href=&quot;#环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;Arch Linux&lt;/li&gt;
&lt;li&gt;WayLand&lt;/li&gt;
&lt;li&gt;KDE Plasma 6.6.5&lt;/li&gt;
&lt;li&gt;Plasma Login Manager&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;启用&lt;a href=&quot;#启用&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;KDE 的设置中其实有 NumLock 选项（键盘 -&amp;gt; NumLock 在开机时的状态），但这个选项在我这里根本没有作用。&lt;/p&gt;&lt;p&gt;根据 &lt;a href=&quot;https://wiki.archlinux.org/title/Activating_numlock_on_bootup&quot; target=&quot;_blank&quot;&gt;ArchWiki&lt;/a&gt;，我们可以安装 &lt;a href=&quot;https://aur.archlinux.org/packages/systemd-numlockontty&quot; target=&quot;_blank&quot;&gt;systemd-numlockontty&lt;/a&gt;&lt;sup&gt;aur&lt;/sup&gt;：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;yay&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;systemd-numlockontty&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;然后启用 &lt;code&gt;numLockOnTty&lt;/code&gt; systemd 服务：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;systemctl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;enable&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--now&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;numLockOnTty&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;之后根据你的图形协议和登录方式（我这里是 Wayland + PLM，请参考 &lt;a href=&quot;https://wiki.archlinux.org/title/Activating_numlock_on_bootup#Wayland&quot; target=&quot;_blank&quot;&gt;ArchWiki&lt;/a&gt;）进行不同的操作：&lt;/p&gt;&lt;section&gt;&lt;h2&gt;Plasma Login Manager&lt;a href=&quot;#plasma-login-manager&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;该文件权限为 600，所有者是 plasmalogin，看不到是正常的，使用 &lt;code&gt;sudoedit&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在 &lt;code&gt;/var/lib/plasmalogin/.config/kdedefaults/kcminputrc&lt;/code&gt; 中添加：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;Keyboard&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;NumLock&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重启系统。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>Rime 配置</title><link>https://nekoside.com/posts/rime-configuration/</link><guid isPermaLink="true">https://nekoside.com/posts/rime-configuration/</guid><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;介绍&lt;a href=&quot;#介绍&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;小狼毫 Weasel (Windows)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;鼠须管 Squirrel (macOS)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;中州韵 (Linux)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;同文 Trime (Android)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;以上输入法均为 Rime 引擎在不同平台的输入法实现，都可以当作 Rime&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;配置&lt;a href=&quot;#配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Rime 的目录结构：&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── build&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── bopomofo.prism.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── bopomofo.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── default.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin.prism.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin.reverse.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin.table.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin_fluency.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin_simp.prism.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin_simp.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin_tw.prism.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── luna_pinyin_tw.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── stroke.prism.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── stroke.reverse.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── stroke.schema.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── stroke.table.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── terra_pinyin.reverse.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── terra_pinyin.table.bin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── weasel.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── default.custom.yaml    修改这个配置文件，会覆盖上面的 default.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── installation.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── luna_pinyin.userdb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── 000005.ldb&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── 000008.log&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── CURRENT&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── LOCK&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── LOG&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   ├── LOG.old&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;│   └── MANIFEST-000007&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;├── user.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;└── weasel.custom.yaml&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;section&gt;&lt;h2&gt;Linux&lt;a href=&quot;#linux&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;Fcitx5&lt;a href=&quot;#fcitx5&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;用户配置文件位于 &lt;code&gt;.local/share/fcitx5/rime/&lt;/code&gt;&lt;/p&gt;&lt;p&gt;在配置目录中新建 &lt;code&gt;default.custom.yaml&lt;/code&gt; 文件，用于覆盖默认的配置。&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;patch&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;menu&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 候选词数量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;page_size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;ascii_composer&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;switch_key&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 禁用左 Shift&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;Shift_L&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;noop&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;# 不是 Ctrl&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;Control_L&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;commit_code&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;switcher&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;# 禁用所有菜单按键&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;hotkeys&lt;/span&gt;&lt;span&gt;: []&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;IBus&lt;a href=&quot;#ibus&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;配置目录&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;~/.config/ibus/rime&lt;/code&gt;&lt;/p&gt;&lt;p&gt;使用&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ibus&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重新部署&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;patch&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;__include&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;rime_ice_suggestion:/&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;menu&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;page_size&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;9&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 设置候选词数量&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;ascii_composer&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;switch_key&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;Shift_L&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;noop&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 禁用左 Shift&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;Control_L&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;commit_code&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;# 使用左 Control 切换&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;switcher&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;hotkeys&lt;/span&gt;&lt;span&gt;: [] &lt;/span&gt;&lt;span&gt;# 关闭 Rime 菜单快捷键&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Reference&lt;a href=&quot;#reference&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://wiki.archlinuxcn.org/wiki/Rime&quot; target=&quot;_blank&quot;&gt;https://wiki.archlinuxcn.org/wiki/Rime&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>解决 Zed 不认识 TailwindCSS 规则</title><link>https://nekoside.com/posts/fix-zed-tailwindcss/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-zed-tailwindcss/</guid><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://github.com/zed-industries/zed/issues/38596&quot; target=&quot;_blank&quot;&gt;https://github.com/zed-industries/zed/issues/38596&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;lsp&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;vscode-css-language-server&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;settings&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;css&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;&quot;lint&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;&quot;unknownAtRules&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;ignore&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;Zed TailwindCSS Docs 建议&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;languages&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;CSS&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;language_servers&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;tailwindcss-intellisense-css&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;!vscode-css-language-server&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;...&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>VSCode Toggle Explorer</title><link>https://nekoside.com/posts/vscode-toggle-explorer/</link><guid isPermaLink="true">https://nekoside.com/posts/vscode-toggle-explorer/</guid><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;key&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;alt+1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;command&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;workbench.view.explorer&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;when&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;viewContainer.workbench.view.explorer.enabled&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;key&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;alt+1&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;command&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;workbench.action.closeSidebar&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;when&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;sideBarVisible &amp;amp;&amp;amp; activeViewlet == &apos;workbench.view.explorer&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>解决蓝牙耳机在播放前后的电流声</title><link>https://nekoside.com/posts/fix-bluetooth-buzz/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-bluetooth-buzz/</guid><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在播放音频开始时以及播放结束后会产生一声电流声，是因为蓝牙耳机会自动睡眠。&lt;/p&gt;
&lt;p&gt;解决方案：后台常驻一个进程阻止睡眠。&lt;/p&gt;
&lt;p&gt;这里使用 &lt;a href=&quot;https://veg.by/en/projects/soundkeeper/&quot; target=&quot;_blank&quot;&gt;SoundKeeper&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://github.com/vrubleg/soundkeeper&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;vrubleg&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;soundkeeper&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Repository details unavailable&lt;/div&gt;&lt;div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;span&gt;Unavailable&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;p&gt;按下 &lt;code&gt;Win+R&lt;/code&gt; 输入 &lt;code&gt;shell:startup&lt;/code&gt; 打开自启动目录将对应架构文件（通常是 &lt;code&gt;SoundKeeper64.exe&lt;/code&gt;）放入即可，如果希望立即生效可以放入后双击打开，这个工具没有 GUI，会在后台常驻。&lt;/p&gt;</content:encoded></item><item><title>不同音频格式嵌入歌词的元数据标签</title><link>https://nekoside.com/posts/media-fomart-lyrics-tags/</link><guid isPermaLink="true">https://nekoside.com/posts/media-fomart-lyrics-tags/</guid><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><content:encoded>

&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;容器格式&lt;/td&gt;&lt;td&gt;元数据标签&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;mp3&lt;/td&gt;&lt;td&gt;UNSYNCED LYRICS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;m4a&lt;/td&gt;&lt;td&gt;LYRICS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;flac&lt;/td&gt;&lt;td&gt;LYRICS&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Windows 可以使用 &lt;a href=&quot;https://www.foobar2000.org/&quot; target=&quot;_blank&quot;&gt;foobar2000&lt;/a&gt; 嵌入歌词。&lt;/p&gt;
&lt;p&gt;Linux 可以使用 &lt;a href=&quot;https://github.com/KDE/kid3&quot; target=&quot;_blank&quot;&gt;kid3&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://github.com/KDE/kid3&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;KDE&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;kid3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Repository details unavailable&lt;/div&gt;&lt;div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;span&gt;Unavailable&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;ArchLinux&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kid3&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>解决 Nautilus 中音乐封面不显示</title><link>https://nekoside.com/posts/fix-nautilus-music-cover/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-nautilus-music-cover/</guid><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;问题描述&lt;a href=&quot;#问题描述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;环境：&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;OS: ArchLinux&lt;/li&gt;
&lt;li&gt;WM: Hyprland (Wayland)&lt;/li&gt;
&lt;li&gt;GPU: NVIDIA&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;视频和图片封面都正常显示，音乐封面不显示。&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;安装包 &lt;code&gt;totem&lt;/code&gt; :&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;ArchLinux&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;totem&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;后重新打开 Nautilus.&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>解决 Steam 下载速度像 |sinx|</title><link>https://nekoside.com/posts/fix-steam-sinx-download/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-steam-sinx-download/</guid><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;按 &lt;code&gt;Win+X&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;631&quot; src=&quot;/_astro/Win_X.DUr0YunF_ZuFhS7.webp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;选择 &lt;code&gt;磁盘管理(K)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;点击属性&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;284&quot; height=&quot;286&quot; src=&quot;/_astro/%E7%A3%81%E7%9B%98%E5%B1%9E%E6%80%A7.eYBYi5S3_QDgpc.webp&quot; /&gt;&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Caution&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;如果你的 Steam 下载驱动器位于&lt;strong&gt;系统驱动器&lt;/strong&gt;，请&lt;strong&gt;谨慎关闭&lt;/strong&gt;该选项。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;在策略中关闭写入缓存。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;263&quot; height=&quot;142&quot; src=&quot;/_astro/%E5%86%99%E5%85%A5%E7%BC%93%E5%AD%98%E7%AD%96%E7%95%A5.C2e6I-NW_2kmF4h.webp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;关闭后下载中的游戏应该会出现错误，等一会或重启 Steam 即可。&lt;/p&gt;</content:encoded></item><item><title>Obsidian 修改 MathJax 字号</title><link>https://nekoside.com/posts/obsidian-change-mathjax-fontsize/</link><guid isPermaLink="true">https://nekoside.com/posts/obsidian-change-mathjax-fontsize/</guid><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;参考：&lt;a href=&quot;https://www.reddit.com/r/ObsidianMD/comments/qo2ayx/any_way_to_increase_the_size_of_latex_expression/&quot; target=&quot;_blank&quot;&gt;Reddit ObsidianMD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在仓库的 &lt;code&gt;.obsidian\snippets&lt;/code&gt; 中新建一个 css 文件，&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;.MathJax&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;font-size: &lt;/span&gt;&lt;span&gt;&lt;span&gt;1.3&lt;/span&gt;&lt;span&gt;em&lt;/span&gt;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;然后在 Obsidian 设置 -&amp;gt; 外观中启用即可。&lt;/p&gt;</content:encoded></item><item><title>让 Obsidian 正确渲染 \oiint 和 \oiiint</title><link>https://nekoside.com/posts/obsidian-oiint/</link><guid isPermaLink="true">https://nekoside.com/posts/obsidian-oiint/</guid><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;由于当前版本 Obsidian 使用的 MathJax 版本不支持这两个命令（MathJax 4.0 已经支持），所以无法正常渲染，解决方案如下：&lt;/p&gt;
&lt;section&gt;&lt;h1&gt;安装 Extended MathJax 插件&lt;a href=&quot;#安装-extended-mathjax-插件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;跟随插件指示创建 &lt;code&gt;preamble.sty&lt;/code&gt;&lt;/p&gt;&lt;p&gt;输入&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;\newcommand&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;\oiint&lt;/span&gt;&lt;span&gt;}{&lt;/span&gt;&lt;span&gt;\unicode&lt;/span&gt;&lt;span&gt;{x222F}}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;\newcommand&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt;\oiiint&lt;/span&gt;&lt;span&gt;}{&lt;/span&gt;&lt;span&gt;\unicode&lt;/span&gt;&lt;span&gt;{x2230}}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重新启动 Obsidian 后正常渲染。&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>VSCode 修改某个文件的编辑方式(编辑器)</title><link>https://nekoside.com/posts/vscode-reopen-with/</link><guid isPermaLink="true">https://nekoside.com/posts/vscode-reopen-with/</guid><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;例如我想以文本的形式编辑一个 &lt;code&gt;obj&lt;/code&gt; 文件&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;VSCode&lt;/code&gt; 快捷键编辑中搜索&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@command:workbench.action.reopenWithEditor&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;分配快捷键即可.&lt;/p&gt;</content:encoded></item><item><title>7-Zip 修改语言编码</title><link>https://nekoside.com/posts/7zip-charset/</link><guid isPermaLink="true">https://nekoside.com/posts/7zip-charset/</guid><pubDate>Fri, 13 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GBK&lt;/code&gt; 936&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Shift-JIS&lt;/code&gt; 932&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;7z&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;文件&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-o&amp;lt;输出路径&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-mcp=932&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;即可用 &lt;code&gt;Shift-JIS&lt;/code&gt; 解压&lt;/p&gt;
&lt;p&gt;输出路径可以省略&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;如果需要能够方便修改编码的 GUI，可以看看 &lt;a href=&quot;https://peazip.github.io/&quot; target=&quot;_blank&quot;&gt;Peazip&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://github.com/peazip/PeaZip&quot; target=&quot;_blank&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;peazip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;/&lt;/div&gt;&lt;div&gt;PeaZip&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Repository details unavailable&lt;/div&gt;&lt;div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;div&gt;—&lt;/div&gt;&lt;span&gt;Unavailable&lt;/span&gt;&lt;/div&gt;&lt;/a&gt;</content:encoded></item><item><title>笔记本电脑 Type-C 口没电</title><link>https://nekoside.com/posts/laptop-typec-no-power/</link><guid isPermaLink="true">https://nekoside.com/posts/laptop-typec-no-power/</guid><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;前言&lt;a href=&quot;#前言&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;今天开机后发现笔记本电脑侧面的两个普通 Type-C 口没电，Type-A 口都正常，PD 口也正常.&lt;/p&gt;&lt;p&gt;插在 C 口拓展坞上的鼠标键盘无线接收器无法使用，充电器也不能给其他设备充电.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决&lt;a href=&quot;#解决&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;完全关机后拔掉所有外接设备，&lt;strong&gt;长按电源键&lt;/strong&gt; 30 秒，&lt;strong&gt;释放静电&lt;/strong&gt;后开机，恢复正常.&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;还好不是硬件损坏 (&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>卡通渲染中的描边</title><link>https://nekoside.com/posts/toonshading-outline/</link><guid isPermaLink="true">https://nekoside.com/posts/toonshading-outline/</guid><pubDate>Fri, 06 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;法线外扩&lt;a href=&quot;#法线外扩&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;&lt;strong&gt;基本原理&lt;/strong&gt;&lt;a href=&quot;#基本原理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;原理是渲染两次，第一个 Pass 正常渲染正面，将背面剔除，第二个 Pass 将正面剔除后先将背面顶点沿着法线的方向移动，外扩后再渲染背面，&lt;/p&gt;&lt;p&gt;最后两个 Pass 叠加在一起。&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;&lt;strong&gt;Unity 实现&lt;/strong&gt;&lt;a href=&quot;#unity-实现&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;渲染正面&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Shader&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;nekoside/default&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;Properties&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_BaseColor(&lt;/span&gt;&lt;span&gt;&quot;BaseColor&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Color&lt;/span&gt;&lt;span&gt;) = (&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;SubShader&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;&quot;RenderType&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;Opaque&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;&quot;Queue&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;Geometry&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;// 渲染正面&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;Pass&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Cull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Back&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;HLSLPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#pragma&lt;/span&gt;&lt;span&gt; vertex vert&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#pragma&lt;/span&gt;&lt;span&gt; fragment frag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;CBUFFER_START&lt;/span&gt;&lt;span&gt;(UnityPerMaterial)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt; _BaseColor;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CBUFFER_END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; Attributes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;float3&lt;/span&gt;&lt;span&gt;&lt;span&gt; positionOS : &lt;/span&gt;&lt;span&gt;POSITION&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; Varyings&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;float4&lt;/span&gt;&lt;span&gt; positionHCS : SV_POSITION;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Varyings &lt;/span&gt;&lt;span&gt;vert&lt;/span&gt;&lt;span&gt;(Attributes IN)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Varyings OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OUT.positionHCS = &lt;/span&gt;&lt;span&gt;TransformObjectToHClip&lt;/span&gt;&lt;span&gt;(IN.positionOS);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;frag&lt;/span&gt;&lt;span&gt;(Varyings IN) : SV_Target&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt; OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OUT = &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt;(_BaseColor.rgba);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;ENDHLSL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;渲染背面（描边）&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Shader&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;nekoside/outline&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;Properties&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_OutlineColor (&lt;/span&gt;&lt;span&gt;&quot;Outline Color&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Color&lt;/span&gt;&lt;span&gt;) = (&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;_OutlineWidth (&lt;/span&gt;&lt;span&gt;&quot;Outline Width&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Range&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;)) = &lt;/span&gt;&lt;span&gt;0.25&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;SubShader&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Tags&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;&quot;RenderType&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;Opaque&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Queue&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;Geometry&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;14&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;15&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;16&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;// 渲染背面（描边）&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;17&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;Pass&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;18&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;19&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Cull&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Front&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;20&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;HLSLPROGRAM&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;21&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#include&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;22&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;#pragma&lt;/span&gt;&lt;span&gt; vertex vert&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;23&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;pragma fragment frag&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;25&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;CBUFFER_START&lt;/span&gt;&lt;span&gt;(UnityPerMaterial)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;26&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt; _OutlineColor;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;27&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;float&lt;/span&gt;&lt;span&gt; _OutlineWidth;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;28&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;CBUFFER_END&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;29&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;30&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; Attributes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;31&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;32&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;float3&lt;/span&gt;&lt;span&gt;&lt;span&gt; positionOS : &lt;/span&gt;&lt;span&gt;POSITION&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;33&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;float3&lt;/span&gt;&lt;span&gt;&lt;span&gt; normalOS : &lt;/span&gt;&lt;span&gt;NORMAL&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;34&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;35&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;36&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;struct&lt;/span&gt;&lt;span&gt; Varyings&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;37&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;38&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;float4&lt;/span&gt;&lt;span&gt; positionHCS : SV_POSITION;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;39&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;40&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;41&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Varyings &lt;/span&gt;&lt;span&gt;vert&lt;/span&gt;&lt;span&gt;(Attributes IN)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;42&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;43&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Varyings OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;44&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;IN.positionOS += _OutlineWidth * IN.normalOS;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;45&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span&gt;OUT.positionHCS = &lt;/span&gt;&lt;span&gt;TransformObjectToHClip&lt;/span&gt;&lt;span&gt;(IN.positionOS);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;46&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; OUT;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;47&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;48&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;49&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;half4&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;frag&lt;/span&gt;&lt;span&gt;(Varyings IN) : SV_Target&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;50&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;51&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;                &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; _OutlineColor;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;52&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;53&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;            &lt;/span&gt;&lt;span&gt;ENDHLSL&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;54&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;55&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;56&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;展开&lt;/span&gt;&lt;span&gt;收起&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;因为 &lt;code&gt;Unity&lt;/code&gt; 默认不会渲染所有 Pass（因为会对性能造成影响），所以我这里把两个 Pass 拆分为两个 Shader，一共使用两个 Material.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;342&quot; height=&quot;130&quot; src=&quot;/_astro/%E4%B8%A4%E4%B8%AAMaterial.HmxdrwKY_Z1KtRva.webp&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;&lt;strong&gt;描边断开&lt;/strong&gt;&lt;a href=&quot;#描边断开&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;直接使用刚刚的 Shader 会变成这样&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;419&quot; height=&quot;335&quot; src=&quot;/_astro/%E6%8F%8F%E8%BE%B9%E6%96%AD%E5%BC%80.DkCrAnD0_16JWTq.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;因为法线外扩得到的描边，会导致模型的硬边（比如这个立方体）连接处断开&lt;/p&gt;&lt;p&gt;解决方法是生成平滑法线&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;381&quot; height=&quot;120&quot; src=&quot;/_astro/Unity%E5%B9%B3%E6%BB%91%E6%B3%95%E7%BA%BF.BGnvS0Vm_Z1iHu0v.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;修改 &lt;code&gt;Smoothing Angle&lt;/code&gt;&lt;/p&gt;&lt;p&gt;效果如下&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;434&quot; height=&quot;347&quot; src=&quot;/_astro/Unity%E6%8F%8F%E8%BE%B9.sbufMHET_Z2cX8QJ.webp&quot; /&gt;&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>不断弹出的 ms-gamingoverlay</title><link>https://nekoside.com/posts/annoying-ms-gamingoverlay/</link><guid isPermaLink="true">https://nekoside.com/posts/annoying-ms-gamingoverlay/</guid><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;原因&lt;a href=&quot;#原因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;原因是 Xbox Game Bar 被精简掉了，但是 Windows 的 Game DVR（Digital Video Recorder）后台还在。启动游戏等操作时，系统会去调用 &lt;code&gt;ms-gamingoverlay:&lt;/code&gt; 协议，但是找不到对应的程序，所以弹出该提示框。&lt;/p&gt;&lt;p&gt;（Game DVR 是 Xbox 背后负责录制的东西）&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;禁用 Game DVR&lt;a href=&quot;#禁用-game-dvr&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;这里推荐一个注册表编辑工具：&lt;a href=&quot;https://kurtzimmermann.com/downrc_en.html&quot; target=&quot;_blank&quot;&gt;RegCool&lt;/a&gt;，图形化且带有历史记录，可以回退。&lt;/p&gt;&lt;p&gt;（不是 FOSS，但是被广泛使用）&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;键：&lt;code&gt;HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;值：&lt;code&gt;AppCaptureEnabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;类型：&lt;code&gt;REG_DWORD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;数据：&lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;li&gt;键：&lt;code&gt;HKCU\System\GameConfigStore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;值：&lt;code&gt;GameDVR_Enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;类型: &lt;code&gt;REG_DWORD&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;数据：&lt;code&gt;0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;reg add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;f &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;t REG_DWORD &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;v AppCaptureEnabled &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;d &lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;reg add HKCU\System\GameConfigStore &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;f &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;t REG_DWORD &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;v GameDVR_Enabled &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;d &lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>配置 Git 使用 SSH 签名和验证</title><link>https://nekoside.com/posts/git-ssh-sign/</link><guid isPermaLink="true">https://nekoside.com/posts/git-ssh-sign/</guid><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;配置&lt;a href=&quot;#配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;基础配置&lt;a href=&quot;#基础配置&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;生成一个新的 ssh 密钥：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ssh-keygen&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ed25519&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-C&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;邮箱&amp;gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;配置 Git 提交的全局用户名和邮箱：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;用户名&amp;gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.email&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;邮箱&amp;gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;使用 SSH 进行签名&lt;a href=&quot;#使用-ssh-进行签名&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;配置 Git 提交自动进行签名：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;commit.gpgsign&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;配置签名使用 SSH：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;gpg.format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;配置签名的 SSH 公钥&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;git&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;config&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--global&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;user.signingkey&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;SSH&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;公钥或私钥文件&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;References&lt;a href=&quot;#references&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;/section&gt;</content:encoded></item><item><title>提高 PowerShell 启动速度</title><link>https://nekoside.com/posts/optimize-pwsh-startspeed/</link><guid isPermaLink="true">https://nekoside.com/posts/optimize-pwsh-startspeed/</guid><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在&lt;strong&gt;提权&lt;/strong&gt;的 powershell 中执行以下代码：&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Source - https://stackoverflow.com/a/59343705&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Posted by Theo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;# Retrieved 2026-06-24, License - CC BY-SA 4.0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;$env:PATH&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;/span&gt;&lt;span&gt;Runtime.InteropServices.RuntimeEnvironment&lt;/span&gt;&lt;span&gt;]::GetRuntimeDirectory()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;AppDomain&lt;/span&gt;&lt;span&gt;]::CurrentDomain.GetAssemblies() | &lt;/span&gt;&lt;span&gt;ForEach-Object&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;$path&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; $_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;.Location&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;$path&lt;/span&gt;&lt;span&gt;) {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;$name&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;Split-Path&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;$path&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;Leaf&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;Write-Host&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;ForegroundColor Yellow &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;`r`n&lt;/span&gt;&lt;span&gt;&lt;span&gt;Running ngen.exe on &apos;&lt;/span&gt;&lt;span&gt;$&lt;/span&gt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&apos;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;ngen.exe&lt;/span&gt;&lt;span&gt; install &lt;/span&gt;&lt;span&gt;$path&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;nologo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;12&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;13&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>Windows 设置程序自启动</title><link>https://nekoside.com/posts/windows-program-starup/</link><guid isPermaLink="true">https://nekoside.com/posts/windows-program-starup/</guid><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;482&quot; height=&quot;309&quot; src=&quot;/_astro/startup.BOYLKXOV_Z1CwbTr.webp&quot; /&gt;&lt;/p&gt;
&lt;p&gt;执行后会打开 &lt;code&gt;C:\Users\&amp;lt;UserName&amp;gt;\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;放在这里的程序开机后会自动执行，&lt;/p&gt;
&lt;p&gt;可以把要自启动的可执行程序或其快捷方式放在这里.&lt;/p&gt;</content:encoded></item><item><title>解决 GNOME 下 Jetbrains IDE 任务栏不显示 ICON</title><link>https://nekoside.com/posts/fix-gnome-jetbrains-icon/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-gnome-jetbrains-icon/</guid><pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;问题描述&lt;a href=&quot;#问题描述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;572&quot; height=&quot;467&quot; src=&quot;/_astro/IntelliJ.DVlkxd46_2gi4Fo.webp&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;371&quot; height=&quot;368&quot; src=&quot;/_astro/IDEA%E5%88%9B%E5%BB%BA%E6%A1%8C%E9%9D%A2%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F.BemhhldL_Z2gUdPT.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;这会在 &lt;code&gt;/usr/share/applications/&lt;/code&gt; 下自动创建一个 &lt;code&gt;.desktop&lt;/code&gt; 文件, 会被 GNOME 识别&lt;/p&gt;&lt;p&gt;原先的在 &lt;code&gt;~/.local/share/applications&lt;/code&gt; 下的 &lt;code&gt;.desktop&lt;/code&gt; 文件可以删除&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>Linux 下 USB 设备无法识别</title><link>https://nekoside.com/posts/linux-usb-bug/</link><guid isPermaLink="true">https://nekoside.com/posts/linux-usb-bug/</guid><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;原因&lt;a href=&quot;#原因&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;更新 Linux 内核后没有重启, 导致 /lib/modules/ 下是新的内核, 而当前加载的是旧的内核, 插入 USB 设备后新的模块无法加载.&lt;/strong&gt;&lt;/p&gt;&lt;hr /&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;过程&lt;a href=&quot;#过程&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt; 中没有 USB 设备&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;lsmod&lt;/span&gt;&lt;span&gt; | &lt;/span&gt;&lt;span&gt;grep&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;usb_storage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;插入设备后 USB 模块仍未加载&lt;/p&gt;&lt;p&gt;尝试手动加载模块&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;modprobe&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;usb_storage&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;modprobe: FATAL: Module usb_storage not found in directory /lib/modules/6.18.4-zen1-1-zen&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;随后去 /lib/modules/ 下查看发现是 6.18.5 的内核&lt;/p&gt;&lt;p&gt;但是当前加载的是 6.18.4 内核&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;uname&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-r&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;输出 &lt;code&gt;6.18.4-zen1-1-zen&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;重启电脑后问题解决&lt;/strong&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;Reference&lt;a href=&quot;#reference&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;a href=&quot;https://www.reddit.com/r/linuxquestions/comments/9w4bq8/usb_storage_not_recognised_kernel_module_missing/&quot; target=&quot;_blank&quot;&gt;Reddit&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>XMake 基础</title><link>https://nekoside.com/posts/xmake-basic/</link><guid isPermaLink="true">https://nekoside.com/posts/xmake-basic/</guid><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;基本命令&lt;a href=&quot;#基本命令&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;自动生成项目文件&lt;a href=&quot;#自动生成项目文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;create&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-P&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;目录&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-P&lt;/code&gt; 参数用于指定创建的项目目录&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;编译&lt;a href=&quot;#编译&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;build&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;b&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-y&lt;/code&gt; 参数可以自动确认要安装的依赖包&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;运行&lt;a href=&quot;#运行&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;run&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;打包&lt;a href=&quot;#打包&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;package&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;或&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;p&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;依赖管理&lt;a href=&quot;#依赖管理&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;编辑项目根目录下的 &lt;code&gt;xmake.lua&lt;/code&gt;&lt;/p&gt;&lt;p&gt;通过 &lt;code&gt;add_requires()&lt;/code&gt; , &lt;code&gt;add_packages()&lt;/code&gt; 添加依赖&lt;/p&gt;&lt;p&gt;例如&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;add_requires&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;glad&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;glfw&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;gtk4&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;add_requires&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;imgui&quot;&lt;/span&gt;&lt;span&gt;, {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;configs&lt;/span&gt;&lt;span&gt; = {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;glfw&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;opengl3&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;hello&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;9&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;set_kind&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;binary&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;10&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;add_files&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;src/*.cpp&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;11&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;add_packages&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;glad&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;glfw&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;imgui&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;gtk4&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;让 VSCode 读取 XMake 依赖&lt;a href=&quot;#让-vscode-读取-xmake-依赖&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;生成 &lt;code&gt;compile_commands.json&lt;/code&gt;&lt;a href=&quot;#生成-compile_commandsjson&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;&lt;a href=&quot;https://xmake.io/guide/extensions/ide-integration-plugins.html&quot; target=&quot;_blank&quot;&gt;自动生成&lt;/a&gt;&lt;a href=&quot;#自动生成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;在 &lt;code&gt;xmake.lua&lt;/code&gt; 中添加&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;add_rules&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;plugin.compile_commands.autoupdate&quot;&lt;/span&gt;&lt;span&gt;, {&lt;/span&gt;&lt;span&gt;outputdir&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;[输出路径]&quot;&lt;/span&gt;&lt;span&gt;})&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;或使用&lt;a href=&quot;https://github.com/xmake-io/xmake-vscode&quot; target=&quot;_blank&quot;&gt;XMake 的 VSCode 插件&lt;/a&gt;自动生成&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;手动生成&lt;a href=&quot;#手动生成&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;xmake&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;project&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-k&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;compile_commands&lt;/span&gt;&lt;span&gt; [输出路径]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;其中 &lt;code&gt;project&lt;/code&gt; 命令用于生成项目文件, &lt;code&gt;-k&lt;/code&gt; 用于选择生成的项目文件类型&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;指定 &lt;code&gt;compile_commands.json&lt;/code&gt;&lt;a href=&quot;#指定-compile_commandsjson&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;clangd &lt;em&gt;似乎&lt;/em&gt;默认只读取根目录下的 &lt;code&gt;compile_commands.json&lt;/code&gt;&lt;/p&gt;&lt;p&gt;需要在 &lt;code&gt;.clangd&lt;/code&gt; 中添加：&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;CompileFlags&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;CompilationDatabase&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;span&gt;compile_commands.json 目录&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;也可以在 VSCode &lt;code&gt;settings.json&lt;/code&gt; 中指定&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&quot;clangd.arguments&quot;&lt;/span&gt;&lt;span&gt;: [&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;--compile-commands-dir=[指定你的路径]&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>&apos;xterm-kitty&apos;: unknown terminal type</title><link>https://nekoside.com/posts/xterm-kitty-unknown-terminal-type/</link><guid isPermaLink="true">https://nekoside.com/posts/xterm-kitty-unknown-terminal-type/</guid><pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;问题&lt;a href=&quot;#问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;在 SSH 中执行 &lt;code&gt;clear&lt;/code&gt; 命令时报错, 提示 &lt;code&gt;&apos;xterm-kitty&apos;: unknown terminal type&lt;/code&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;section&gt;&lt;h2&gt;上传 kitty 的 terminfo 到服务器 (推荐)&lt;a href=&quot;#上传-kitty-的-terminfo-到服务器-推荐&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;kitty&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+kitten&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;lt;user&amp;gt;@&amp;lt;host&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;本地终端降级 TERM&lt;a href=&quot;#本地终端降级-term&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;bash/zsh&lt;a href=&quot;#bashzsh&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TERM&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;xterm-256color&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;fish&lt;a href=&quot;#fish&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;set&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-gx&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;TERM&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;xterm-256color&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;安装 &lt;code&gt;kitty&lt;/code&gt;&lt;a href=&quot;#安装-kitty&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;在服务器中安装 &lt;code&gt;kitty&lt;/code&gt; 即可&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Arch 系&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pacman&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-S&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kitty&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Debian 系&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;apt&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;kitty&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>GNOME 修改默认终端类型</title><link>https://nekoside.com/posts/gnome-default-terminal/</link><guid isPermaLink="true">https://nekoside.com/posts/gnome-default-terminal/</guid><pubDate>Sat, 10 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;参考：&lt;a href=&quot;https://discourse.gnome.org/t/default-terminal/1307&quot; target=&quot;_blank&quot;&gt;https://discourse.gnome.org/t/default-terminal/1307&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;将自己使用的终端发送软链接到 &lt;code&gt;/usr/bin&lt;/code&gt;, 叫做 &lt;code&gt;gnome-terminal&lt;/code&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;sudo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ln&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-s&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/bin/fish&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/usr/bin/gnome-terminal&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>Android 读写权限</title><link>https://nekoside.com/posts/android-rw/</link><guid isPermaLink="true">https://nekoside.com/posts/android-rw/</guid><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h2&gt;&lt;strong&gt;新版（Android 10 就有，但默认不开，11强制开启）&lt;/strong&gt;&lt;a href=&quot;#新版android-10-就有但默认不开11强制开启&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;MediaStore.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;&lt;strong&gt;旧版（API 29及以下）&lt;/strong&gt;&lt;a href=&quot;#旧版api-29及以下&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;NaN. 在 AndroidManifest.xml 中声明权限，并启用 &lt;code&gt;requestLegacy&lt;/code&gt;&lt;/p&gt;&lt;p&gt;NaN. 在逻辑中请求权限 :&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;requestPermissions&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]{&lt;/span&gt;&lt;span&gt;Manifest&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;permission&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;WRITE_EXTERNAL_STORAGE&lt;/span&gt;&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&lt;span&gt; CODE)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;&lt;strong&gt;如何判断是否有权限&lt;/strong&gt;&lt;a href=&quot;#如何判断是否有权限&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ContextCompat&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;checkSelfPermission&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;&lt;strong&gt;return CODE&lt;/strong&gt;&lt;a href=&quot;#return-code&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;0 代表该权限被授予&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;</content:encoded></item><item><title>Windows11 下 Win+X 菜单无法使用</title><link>https://nekoside.com/posts/win11-winx-bug/</link><guid isPermaLink="true">https://nekoside.com/posts/win11-winx-bug/</guid><pubDate>Tue, 06 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;section&gt;&lt;h1&gt;环境&lt;a href=&quot;#环境&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;版本 Windows 11 专业版&lt;/li&gt;
&lt;li&gt;版本号 24H2&lt;/li&gt;
&lt;li&gt;操作系统版本 26100.7171&lt;/li&gt;
&lt;li&gt;体验 Windows 功能体验包 1000.26100.265.0&lt;/li&gt;
&lt;/ul&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;问题描述&lt;a href=&quot;#问题描述&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;231&quot; height=&quot;94&quot; src=&quot;/_astro/Windows11Bug.CiahXjRF_28W03w.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;如图，无论右键 Windows 图标或按下 Win + X，都无法正常弹出菜单&lt;/p&gt;&lt;p&gt;同时，ContextMenuManager 出现以下问题（应该有关联&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;880&quot; height=&quot;656&quot; src=&quot;/_astro/%E5%8F%B3%E9%94%AE%E7%AE%A1%E7%90%86.6bH3VucB_ZSQYQM.webp&quot; /&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;解决方案&lt;a href=&quot;#解决方案&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;未知&lt;/p&gt;&lt;/section&gt;</content:encoded></item><item><title>WSL 安装提示：拒绝访问</title><link>https://nekoside.com/posts/wsl-permission-denied/</link><guid isPermaLink="true">https://nekoside.com/posts/wsl-permission-denied/</guid><pubDate>Wed, 31 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;明明已经提权，但仍提示拒绝访问，可以添加参数从 web 下载而非 Microsoft Store&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;wsl &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;install &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;web&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;download&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>修复 Github Notifications Bug</title><link>https://nekoside.com/posts/fix-github-notification/</link><guid isPermaLink="true">https://nekoside.com/posts/fix-github-notification/</guid><pubDate>Sat, 27 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://github.com/orgs/community/discussions/6874#discussioncomment-14507162&quot; target=&quot;_blank&quot;&gt;https://github.com/orgs/community/discussions/6874#discussioncomment-14507162&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>VSCode 一键运行 Rust</title><link>https://nekoside.com/posts/vscode-run-rust/</link><guid isPermaLink="true">https://nekoside.com/posts/vscode-run-rust/</guid><pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;key&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;f5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;command&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;workbench.action.terminal.sendSequence&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;args&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;text&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;cargo run&lt;/span&gt;&lt;span&gt;\u000D&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;6&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;7&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;when&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;inRustProject&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;8&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;添加到 Keybinding.json 中&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/72925072/how-to-create-a-shortcut-to-build-and-run-rust-code-from-inside-vs-code&quot; target=&quot;_blank&quot;&gt;https://stackoverflow.com/questions/72925072/how-to-create-a-shortcut-to-build-and-run-rust-code-from-inside-vs-code&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;同时修改 CMake 拓展的快捷键防止冲突&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;key&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;f5&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;command&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;cmake.launchTarget&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;when&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;resourceLangId  cpp || resourceLangId  c&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;5&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;</content:encoded></item><item><title>Powershell 退格和 Delete 出现黑色背景</title><link>https://nekoside.com/posts/pwsh-backspace-bug/</link><guid isPermaLink="true">https://nekoside.com/posts/pwsh-backspace-bug/</guid><pubDate>Thu, 28 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;powershell &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;noprofile &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;command &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;Install-Module PSReadLine -Force -SkipPublisherCheck -scope allusers&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;运行上述命令&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/microsoft/terminal/issues/6767&quot; target=&quot;_blank&quot;&gt;https://github.com/microsoft/terminal/issues/6767&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/microsoft/terminal/issues/14619&quot; target=&quot;_blank&quot;&gt;https://github.com/microsoft/terminal/issues/14619&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>Windows 卸载 GameOverLay 后禁用弹出窗口</title><link>https://nekoside.com/posts/windows-fix-gameoverlay-popup/</link><guid isPermaLink="true">https://nekoside.com/posts/windows-fix-gameoverlay-popup/</guid><pubDate>Sun, 24 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\GameDVR &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;f &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;t REG_DWORD &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;v &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;AppCaptureEnabled&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;d &lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;reg add HKEY_CURRENT_USER\System\GameConfigStore &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;f &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;t REG_DWORD &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;v &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&quot;GameDVR_Enabled&quot;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;d &lt;/span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://learn.microsoft.com/en-us/answers/questions/3739326/how-to-stop-the-ms-gamingoverlay-popup&quot; target=&quot;_blank&quot;&gt;https://learn.microsoft.com/en-us/answers/questions/3739326/how-to-stop-the-ms-gamingoverlay-popup&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</content:encoded></item><item><title>error：package Manifest does not exist</title><link>https://nekoside.com/posts/package-manifest-does-not-exist/</link><guid isPermaLink="true">https://nekoside.com/posts/package-manifest-does-not-exist/</guid><pubDate>Sat, 07 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;解决：导入这个包&lt;sup&gt;&lt;a href=&quot;#user-content-fn-stackoverflow&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;android.Manifest&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;section&gt;&lt;h2&gt;Preferences&lt;a href=&quot;#preferences&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;Footnotes&lt;a href=&quot;#footnote-label&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/a/75235573&quot; target=&quot;_blank&quot;&gt;Stack Overflow - android manifest is not recognized in activity&lt;/a&gt; &lt;a href=&quot;#user-content-fnref-stackoverflow&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;</content:encoded></item><item><title>Hexo 部署博客到云端</title><link>https://nekoside.com/posts/hexo-deploy-to-cloud/</link><guid isPermaLink="true">https://nekoside.com/posts/hexo-deploy-to-cloud/</guid><pubDate>Fri, 29 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;环境： &lt;code&gt;Windows 10&lt;/code&gt;&lt;/p&gt;
&lt;section&gt;&lt;h2&gt;1. 安装 &lt;code&gt;Git&lt;/code&gt;&lt;a href=&quot;#1-安装-git&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://git-scm.com/&quot; target=&quot;_blank&quot;&gt;Git&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;2. 安装 &lt;code&gt;Node.js&lt;/code&gt;&lt;a href=&quot;#2-安装-nodejs&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://nodejs.org/&quot; target=&quot;_blank&quot;&gt;Node.js&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;3. 安装 &lt;code&gt;Hexo&lt;/code&gt;&lt;a href=&quot;#3-安装-hexo&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://hexo.io/&quot; target=&quot;_blank&quot;&gt;Hexo&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;4. 安装数学渲染器 &lt;code&gt;Pandoc&lt;/code&gt;&lt;a href=&quot;#4-安装数学渲染器-pandoc&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://pandoc.org/&quot; target=&quot;_blank&quot;&gt;Pandoc 官网&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/jgm/pandoc/releases&quot; target=&quot;_blank&quot;&gt;Pandoc Github 地址&lt;/a&gt;&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;自动部署脚本&lt;a href=&quot;#自动部署脚本&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;span&gt; /k &lt;/span&gt;&lt;span&gt;&quot;&amp;lt;你的blog所在盘符&amp;gt;: cd &amp;lt;你的blog根目录&amp;gt; &amp;amp;&amp;amp; npx hexo clean &amp;amp;&amp;amp; npx hexo d&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;另存为 &lt;em&gt;bat&lt;/em&gt; 文件.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;如果重装系统&lt;a href=&quot;#如果重装系统&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;如果重装系统，在完成上述步骤后，需要重新获取对仓库的访问权限.&lt;/p&gt;&lt;p&gt;此处以 Github 仓库为例:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ssh-keygen&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ed25519&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4096&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-C&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;your_email@example.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;-t rsa&lt;/code&gt; 指定了加密算法类型（type）为 &lt;em&gt;Ed25519&lt;/em&gt; 算法,&lt;/p&gt;&lt;p&gt;不支持该算法的计算机可以用 &lt;em&gt;rsa&lt;/em&gt; 算法&lt;/p&gt;&lt;p&gt;摘自 Github Docs&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;If you are using a legacy system that doesn’t support the Ed25519 algorithm, use:&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ssh-keygen&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-t&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rsa&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-b&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;4096&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-C&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;your_email@example.com&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;code&gt;-b 4096&lt;/code&gt; 指定了 key 的大小（bits）为 4096（默认为 2048）&lt;/p&gt;&lt;p&gt;使用该命令在默认路径 （AppData 的 .ssh） 下生成公钥和私钥,&lt;/p&gt;&lt;p&gt;然后 &lt;strong&gt;将公钥添加至 Github&lt;/strong&gt;:&lt;/p&gt;&lt;p&gt;在 Github 的 Settings -&amp;gt; SH and GPG keys 中添加一个新的 SSH key.&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;358&quot; height=&quot;196&quot; src=&quot;/_astro/github-add-key.CX-B7u3e_nMJom.webp&quot; /&gt;&lt;/p&gt;&lt;p&gt;最后重新运行刚刚的 bat 文件进行部署.&lt;/p&gt;&lt;p&gt;如果无法连接到 22 端口，&lt;/p&gt;&lt;p&gt;在 ~/.ssh 下创建 config 文件，并写入&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Host&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;github.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Hostname ssh.github.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;3&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Port&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;443&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;4&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;User&lt;/span&gt;&lt;span&gt; git&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;后在 PowerShell 输入&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-T&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;git@github.com&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;如果询问，输入 yes&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;图片路径问题&lt;a href=&quot;#图片路径问题&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;图片粘贴到 MarkDown 文件后，在本地正常预览，但部署后无法正常预览（生成的 html 路径有误），&lt;/p&gt;&lt;p&gt;使用 &lt;a href=&quot;https://github.com/yiyungent/hexo-asset-img&quot; target=&quot;_blank&quot;&gt;hexo-assets-img&lt;/a&gt; 解决, （需要删除其他修复 hexo 图片路径的插件）&lt;/p&gt;&lt;p&gt;具体见 README.&lt;/p&gt;&lt;/section&gt;
&lt;section&gt;&lt;h2&gt;参考 Reference&lt;a href=&quot;#参考-reference&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/51834225/why-use-t-rsa-b-4096-with-ssh-keygen&quot; target=&quot;_blank&quot;&gt;Stack Overflow&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent&quot; target=&quot;_blank&quot;&gt;GitHub Docs&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/section&gt;</content:encoded></item><item><title>SSEEdit中文乱码解决方案</title><link>https://nekoside.com/posts/sseedit-garbled-text/</link><guid isPermaLink="true">https://nekoside.com/posts/sseedit-garbled-text/</guid><pubDate>Thu, 29 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;转自&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://c.tieba.baidu.com/p/6817311646&quot; target=&quot;_blank&quot;&gt;百度贴吧&lt;/a&gt;&lt;/p&gt;&lt;p&gt;用户 @暮林芬弥&lt;/p&gt;&lt;/blockquote&gt;
&lt;section&gt;&lt;h2&gt;解决方法&lt;a href=&quot;#解决方法&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;section&gt;&lt;h3&gt;4.0.1 之前的 SSEEdit&lt;a href=&quot;#401-之前的-sseedit&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在 MO 的启动参数中添加&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;-cp:utf8&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;此方法对我的 4.1.5 不起作用&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;4.0.1 之后的 SSEEdit&lt;a href=&quot;#401-之后的-sseedit&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;在以下路径中找到 &lt;code&gt;Plugins.sseviewsettings&lt;/code&gt; 文件并修改&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&amp;lt;SystemDisk&amp;gt;:\Users\&amp;lt;UserName&amp;gt;\AppData\Local\Skyrim Special Edition\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;在文件末添加以下内容&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;Plugins.sseviewsettings&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;[cpoverride]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;2&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;english&lt;/span&gt;&lt;span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;utf8&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;重新打开 SSEEdit.&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;</content:encoded></item><item><title>上古卷轴5 (Skyrim) 如何降级</title><link>https://nekoside.com/posts/skyrim-downgrade/</link><guid isPermaLink="true">https://nekoside.com/posts/skyrim-downgrade/</guid><pubDate>Sat, 10 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;本文介绍的是 Steam SSE (&lt;strong&gt;S&lt;/strong&gt;kyrim &lt;strong&gt;S&lt;/strong&gt;pecial &lt;strong&gt;E&lt;/strong&gt;dition) 版本而非 LE (&lt;strong&gt;L&lt;/strong&gt;egendary &lt;strong&gt;E&lt;/strong&gt;dition) 版本。&lt;/p&gt;&lt;p&gt;但方案一的降级原理应当&lt;sup&gt;?&lt;/sup&gt;适用于任何其他 Steam 游戏或软件。&lt;/p&gt;&lt;p&gt;对应的包 id 可以从 &lt;a href=&quot;https://steamdb.info/&quot; target=&quot;_blank&quot;&gt;steamdb&lt;/a&gt; 查询，例如：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://steamdb.info/app/489830/depots/&quot; target=&quot;_blank&quot;&gt;https://steamdb.info/app/489830/depots/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://steamdb.info/depot/489832/manifests/&quot; target=&quot;_blank&quot;&gt;https://steamdb.info/depot/489832/manifests/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;格式为：&lt;/p&gt;&lt;p&gt;&lt;code&gt;download_depot &amp;lt;app id&amp;gt; &amp;lt;depot id&amp;gt; &amp;lt;manifest id&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;section&gt;&lt;h1&gt;方案一：手动从 steam 下载&lt;a href=&quot;#方案一手动从-steam-下载&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;参考：&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://tieba.baidu.com/p/7884019542&quot; target=&quot;_blank&quot;&gt;Steam 如何下载游玩特别版 1.5.97 版本【上古卷轴吧】&lt;/a&gt;&lt;/p&gt;&lt;p&gt;作者：贴吧@Zelzone&lt;/p&gt;&lt;/blockquote&gt;&lt;section&gt;&lt;h2&gt;1.在 steam 下载本体&lt;a href=&quot;#1在-steam-下载本体&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Note&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;也许你可以不用下载本体，直接使用控制台下载特定版本，但是我没有试过。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;像往常一样下载 Skyrim&lt;/p&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;2.打开 Steam 控制台&lt;a href=&quot;#2打开-steam-控制台&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Win+R 执行以下命令打开 Steam 控制台（打开慢稍等一下）&lt;/p&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;steam://nav/console&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h2&gt;3.下载目标版本的游戏文件&lt;a href=&quot;#3下载目标版本的游戏文件&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;根据你需要的游戏版本分别下载三份文件包。&lt;/p&gt;&lt;section&gt;&lt;h3&gt;1.5.97&lt;a href=&quot;#1597&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489831 7848722008564294070&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489832 8702665189575304780&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489833 2289561010626853674&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/section&gt;&lt;section&gt;&lt;h3&gt;1.6.1170&lt;a href=&quot;#161170&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489831 8442952117333549665&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489832 8042843504692938467&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;1&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;download_depot 489830 489833 1914580699073641964&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;&lt;p&gt;下载完后打开本体目录，将所有内容删除，然后把刚刚下载的三个文件夹里的内容复制到游戏根目录。&lt;/p&gt;&lt;p&gt;下载目录位于 &lt;code&gt;Steam\steamapps\content&lt;/code&gt; 中&lt;/p&gt;&lt;p&gt;&lt;code&gt;installscript.vdf&lt;/code&gt; 可删除。&lt;/p&gt;&lt;/section&gt;&lt;/section&gt;&lt;/section&gt;
&lt;section&gt;&lt;h1&gt;方案二：n 网降级补丁&lt;a href=&quot;#方案二n-网降级补丁&quot;&gt;&lt;span&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;补丁地址&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;https://www.nexusmods.com/skyrimspecialedition/mods/57618&quot; target=&quot;_blank&quot;&gt;Unofficial Skyrim Special Edition Downgrade Patcher (nexusmods.com)&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;具体看补丁 Description.&lt;/p&gt;&lt;/section&gt;</content:encoded></item></channel></rss>