<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Bootloader on 文艺技术笔记</title>
        <link>https://wenyiblog.top/tags/bootloader/</link>
        <description>Recent content in Bootloader on 文艺技术笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <copyright>文艺技术笔记 | 软件工程师文艺</copyright>
        <lastBuildDate>Sat, 13 Jun 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://wenyiblog.top/tags/bootloader/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>汇编在现代系统中的位置：从 Bootloader 到逆向工程</title>
        <link>https://wenyiblog.top/2026/06/asm-20-modern-relevance/</link>
        <pubDate>Sat, 13 Jun 2026 12:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/asm-20-modern-relevance/</guid>
        <description>&lt;h2 id=&#34;汇编过时了吗&#34;&gt;&lt;a href=&#34;#%e6%b1%87%e7%bc%96%e8%bf%87%e6%97%b6%e4%ba%86%e5%90%97&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;汇编过时了吗？
&lt;/h2&gt;&lt;p&gt;没有。它只是从&amp;quot;日常开发&amp;quot;变成了&amp;quot;专业工具&amp;quot;。&lt;/p&gt;
&lt;h2 id=&#34;场景-1bootloader-与-uefi&#34;&gt;&lt;a href=&#34;#%e5%9c%ba%e6%99%af-1bootloader-%e4%b8%8e-uefi&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;场景 1：Bootloader 与 UEFI
&lt;/h2&gt;&lt;p&gt;计算机启动的第一行代码是汇编：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BIOS/UEFI 固件&lt;/li&gt;
&lt;li&gt;GRUB 引导加载器&lt;/li&gt;
&lt;li&gt;Windows Boot Manager&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; 典型的 MBR 引导代码
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[BITS 16]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ORG 0x7C00]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;start:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov ax, 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov ds, ax
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov es, ax
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov ss, ax
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov sp, 0x7C00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    mov si, msg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    call print_string
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    jmp $
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;场景-2操作系统内核&#34;&gt;&lt;a href=&#34;#%e5%9c%ba%e6%99%af-2%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e5%86%85%e6%a0%b8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;场景 2：操作系统内核
&lt;/h2&gt;&lt;p&gt;Linux 内核的入口点是汇编：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; arch/x86/boot/header.S
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.code16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;jmp     trampoline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;内核初始化阶段：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设置段寄存器&lt;/li&gt;
&lt;li&gt;切换到保护模式&lt;/li&gt;
&lt;li&gt;建立页表&lt;/li&gt;
&lt;li&gt;跳转到 C 代码&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;场景-3漏洞分析与利用&#34;&gt;&lt;a href=&#34;#%e5%9c%ba%e6%99%af-3%e6%bc%8f%e6%b4%9e%e5%88%86%e6%9e%90%e4%b8%8e%e5%88%a9%e7%94%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;场景 3：漏洞分析与利用
&lt;/h2&gt;&lt;p&gt;逆向分析 CVE 漏洞时，你看到的是汇编：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0x08048456:  call   strcpy    ; 缓冲区溢出点
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0x0804845B:  leave
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;0x0804845C:  ret              ; EIP 被覆盖 → 控制流劫持
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;场景-4性能优化&#34;&gt;&lt;a href=&#34;#%e5%9c%ba%e6%99%af-4%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;场景 4：性能优化
&lt;/h2&gt;&lt;p&gt;关键热点函数手写汇编：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;视频编解码（x264）&lt;/li&gt;
&lt;li&gt;加密算法（AES-NI）&lt;/li&gt;
&lt;li&gt;数学库（BLAS/LAPACK）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; SSE2 向量化加法
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;movdqa xmm0, [a]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;paddd  xmm0, [b]
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;movdqa [c], xmm0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;场景-5游戏与反作弊&#34;&gt;&lt;a href=&#34;#%e5%9c%ba%e6%99%af-5%e6%b8%b8%e6%88%8f%e4%b8%8e%e5%8f%8d%e4%bd%9c%e5%bc%8a&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;场景 5：游戏与反作弊
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;游戏引擎底层渲染&lt;/li&gt;
&lt;li&gt;反作弊驱动（Ring 0）&lt;/li&gt;
&lt;li&gt;模拟器开发（NES/GBA）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;学习建议&#34;&gt;&lt;a href=&#34;#%e5%ad%a6%e4%b9%a0%e5%bb%ba%e8%ae%ae&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;学习建议
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先学 8086&lt;/strong&gt;：理解基础概念&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;再学 x86_64&lt;/strong&gt;：掌握现代架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结合 C 语言&lt;/strong&gt;：理解编译输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动手实践&lt;/strong&gt;：写 Bootloader、分析 CrackMe&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;汇编语言是程序员的&amp;quot;拉丁文&amp;quot;。它不常用，但懂它的人能读懂计算机的真正语言。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;汇编语言系列到此结束。&lt;/strong&gt; 从基础到实战，从历史到现代，希望这个系列能帮你建立完整的底层知识体系。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
