<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>LXIOS</title>
  
  <subtitle>Wellcum to LXIOSs BLOG</subtitle>
  <link href="http://example.com/rss.xml" rel="self"/>
  
  <link href="http://example.com/"/>
  <updated>2025-11-16T08:00:18.975Z</updated>
  <id>http://example.com/</id>
  
  <author>
    <name>John Doe</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>C++复习/1.0/C++的运行_C++编译器的运行_C++链接器的运行</title>
    <link href="http://example.com/2025/11/16/C-%E5%A4%8D%E4%B9%A0-1-0-C-%E7%9A%84%E8%BF%90%E8%A1%8C-C-%E7%BC%96%E8%AF%91%E5%99%A8%E7%9A%84%E8%BF%90%E8%A1%8C-C-%E9%93%BE%E6%8E%A5%E5%99%A8%E7%9A%84%E8%BF%90%E8%A1%8C/"/>
    <id>http://example.com/2025/11/16/C-%E5%A4%8D%E4%B9%A0-1-0-C-%E7%9A%84%E8%BF%90%E8%A1%8C-C-%E7%BC%96%E8%AF%91%E5%99%A8%E7%9A%84%E8%BF%90%E8%A1%8C-C-%E9%93%BE%E6%8E%A5%E5%99%A8%E7%9A%84%E8%BF%90%E8%A1%8C/</id>
    <published>2025-11-16T07:56:00.000Z</published>
    <updated>2025-11-16T08:00:18.975Z</updated>
    
    <content type="html"><![CDATA[<h2 id="C"><a href="#C" class="headerlink" title="C++"></a>C++</h2><h2 id="重构-复习"><a href="#重构-复习" class="headerlink" title="重构&#x2F;复习"></a>重构&#x2F;复习</h2><h3 id="Part1-c-是如何工作的"><a href="#Part1-c-是如何工作的" class="headerlink" title="Part1  c++是如何工作的"></a>Part1  c++是如何工作的</h3><p>Include 找到一个文件拷贝到现在这个文件里（在编译前）</p><p>Main这个函数比较特殊，没有返回值时，默认返回0，仅限此函数</p><p>&lt;&lt;重载运算符，也是类似一个函数，也有参数<br>例如std::cout&lt;&lt;”666”&lt;&lt;std::endl里面的666就是参数<br>或者另一层含义是把字符串666推（push）到cout流中，再打印到终端，再推送一个行结束符</p><p>Cin.get()是等我们按下enter键在前往下一条命令前等待，这时程序暂停执行，直到按下回车就继续执行</p><h4 id="怎么把它转换成一个二进制文件？"><a href="#怎么把它转换成一个二进制文件？" class="headerlink" title="怎么把它转换成一个二进制文件？"></a>怎么把它转换成一个二进制文件？</h4><p>【1】预处理。（其实也算是编译的一部分）编译器先处理include（预处理语句），把需要的文件copy进来，你就可以使用这些文件包含的内容了</p><p>【2】编译。预处理完就开始编译了，转化为实际机械代码<br>    1.此时你可以根据你的编译器选择多种编译模式或规则（rules），例如debug模式（会更慢，因为很多优化被关掉了，但好处是可以调试代码），release模式（），编译目标平台x86（代表编译成windows32位），x64，安卓的目标平台等等<br>    2.头文件不会被编译，cpp被编译，因为预处理时头文件内容已经含进来了，cpp被编译的时候放进来的文件一起被编译了<br>    3.每个cpp都被编译成一个目标文件（object file）.obj，对于每一个c++文件，都会生成一个obj。</p><p>【3】链接。把cpp和obj合成一个可执行文件，则需要link，也就是链接（将所有的obj粘文件合在一起成为一个exe文件）<br>    1.单独编译文件时，并未link。Build时，linker会找到正确的各个文件，将其下的内容如函数定义等导入到log函数里，找不到定义就会出现link error（看起来挺吓人的…）</p><h4 id="为了保证代码干净整洁，可以把函数装载到其他文件"><a href="#为了保证代码干净整洁，可以把函数装载到其他文件" class="headerlink" title="为了保证代码干净整洁，可以把函数装载到其他文件"></a>为了保证代码干净整洁，可以把函数装载到其他文件</h4><pre><code>因为c++中任何符号都需要声明，函数也一样，所以各子文件尽量也要包含头文件，main文件中也要声明函数</code></pre><p><code>（声明的意思是这个东西是存在的，不一定要有具体内容。如void log（。。。）；这也是函数签名，这样告诉它有这个函数/东西。至于待会要用的时候再找（link等等）。定义的意思是这个东西到底是什么，是怎么样的。就像void log（。。。）&#123;。。。。&#125;）</code></p><h3 id="Part2-c-编译器是如何工作的"><a href="#Part2-c-编译器是如何工作的" class="headerlink" title="Part2 c++编译器是如何工作的"></a>Part2 c++编译器是如何工作的</h3><p>获取源文件并输出一个obj文件（包含机器代码以及其他我们定义的常数数据）<br>C++与java不同，命名不被严格规定，文件只是提供给编译器源代码的一种方式，而其后缀就是告诉编译器该怎么处理这个文件</p><p>翻译单元<br>一个cpp文件不一定要等于一个翻译单元，当制作大型项目时，很多cpp文件合在一起也可以称作一个翻译单元</p><p>编译的第一阶段<br>预处理</p><p>编译器遍历预处理语句并对其进行处理，如include，define，if，pragma。。。</p><p>#include，编译器打开那个文件，阅读他的所有内容，再粘贴到你写的文件里include相应的位置。所以，它不一定要放在头部，也可穿插在代码行中，仅仅是粘贴内容后再编译没问题就行了。</p><p>#define则是搜索后面的那个东西，将它出现的地方替换为末尾那个内容<br>例如#define INTER int，对的然后之后的INTER都会被替换为”int“字符，再编译</p><p>#if 1，意思是if为真，0就为假，相当于被禁用，再在结尾加个#endif就可以使用。</p><p>Obj内部是二进制形式，你也可以转换成汇编代码去看。</p><p>汇编里函数跟着的一大串随机字符是它的签名，用于唯一定位。</p><p>当然优化时也会自动删除无用的函数，追求speed。</p><h3 id="Part3-c-链接器是如何工作的"><a href="#Part3-c-链接器是如何工作的" class="headerlink" title="Part3 c++链接器是如何工作的"></a>Part3 c++链接器是如何工作的</h3><p>从源文件转化为可执行文件，第一阶段是编译源文件，第二阶段就是链接，其主要焦点是找到每个符号和函数在哪里，再把它们连接起来。它也将拉进我们可能用到的其他库，像是c运行时库，c++标准库，平台api等等。<br>有静态链接和动态链接，不过留到其他篇目再讲。</p><p>但记住，每个文件被编译成一个单独的目标文件，一个翻译单元，他们之间没有关系，不能交互。即使没有其他文件，库通常会在main函数设置入口，（你也可以自定义入口点）进行链接，换句话说应用就是从这里开始run的。</p><p>Vs里<br>C开头的错误代码表示错误出现在编译阶段<br>Lnk开头的错误代码则表示错误出现在link阶段</p><p>Link阶段，主文件调用了函数，即使它没有被实际使用，也会检错<br>但当你在其调用前写下static这个词（静态），意味着这个东西只被声明在这个翻译单元中，它对其他的obj文件都不可见。若它在此文件没有被实际调用，将不会得到任何link错误，但他被调用时自然会检错</p><p>出现多个一样的函数时，link也会告诉你它不知道要链哪个，所以注意使用</p><p>类似static，在前面加一个Inline（内联）的意思是：建议编译器在调用函数的时候直接展开函数体→获取实际函数体并将函数调用替换为函数体，其实是重复调用函数转为重复调用代码，算是节省栈内存的重复消耗</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;C&quot;&gt;&lt;a href=&quot;#C&quot; class=&quot;headerlink&quot; title=&quot;C++&quot;&gt;&lt;/a&gt;C++&lt;/h2&gt;&lt;h2 id=&quot;重构-复习&quot;&gt;&lt;a href=&quot;#重构-复习&quot; class=&quot;headerlink&quot; title=&quot;重构&amp;#x2F;复习&quot;&gt;&lt;/a</summary>
      
    
    
    
    
    <category term="总结" scheme="http://example.com/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="课报" scheme="http://example.com/tags/%E8%AF%BE%E6%8A%A5/"/>
    
    <category term="C++" scheme="http://example.com/tags/C/"/>
    
  </entry>
  
  <entry>
    <title>C语言基础/1.0指针</title>
    <link href="http://example.com/2025/11/10/C%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80-1-0%E6%8C%87%E9%92%88/"/>
    <id>http://example.com/2025/11/10/C%E8%AF%AD%E8%A8%80%E5%9F%BA%E7%A1%80-1-0%E6%8C%87%E9%92%88/</id>
    <published>2025-11-10T10:47:53.000Z</published>
    <updated>2025-11-10T10:47:53.157Z</updated>
    
    
    
    
    
  </entry>
  
  <entry>
    <title>密码相关算法/1.1欧几里得算法_贝祖定理_拓展欧几里得算法</title>
    <link href="http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95-1-1%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95-%E8%B4%9D%E7%A5%96%E5%AE%9A%E7%90%86-%E6%8B%93%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95/"/>
    <id>http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E7%9B%B8%E5%85%B3%E7%AE%97%E6%B3%95-1-1%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95-%E8%B4%9D%E7%A5%96%E5%AE%9A%E7%90%86-%E6%8B%93%E5%B1%95%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%AE%97%E6%B3%95/</id>
    <published>2025-11-08T19:08:48.000Z</published>
    <updated>2025-11-08T19:08:48.541Z</updated>
    
    
    
    
    
  </entry>
  
  <entry>
    <title>密码前置数学/1.0模运算</title>
    <link href="http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E5%89%8D%E7%BD%AE%E6%95%B0%E5%AD%A6-1-0%E6%A8%A1%E8%BF%90%E7%AE%97/"/>
    <id>http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E5%89%8D%E7%BD%AE%E6%95%B0%E5%AD%A6-1-0%E6%A8%A1%E8%BF%90%E7%AE%97/</id>
    <published>2025-11-08T19:03:44.000Z</published>
    <updated>2025-11-08T19:03:44.637Z</updated>
    
    
    
    
    
  </entry>
  
  <entry>
    <title>密码基础/1.0古典密码</title>
    <link href="http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E5%9F%BA%E7%A1%80-1-0%E5%8F%A4%E5%85%B8%E5%AF%86%E7%A0%81/"/>
    <id>http://example.com/2025/11/09/%E5%AF%86%E7%A0%81%E5%9F%BA%E7%A1%80-1-0%E5%8F%A4%E5%85%B8%E5%AF%86%E7%A0%81/</id>
    <published>2025-11-08T19:02:30.000Z</published>
    <updated>2025-11-08T19:02:30.314Z</updated>
    
    
    
    
    
  </entry>
  
  <entry>
    <title>初见二进制/汇编/1.5堆栈提升_堆栈图</title>
    <link href="http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-5%E5%A0%86%E6%A0%88%E6%8F%90%E5%8D%87-%E5%A0%86%E6%A0%88%E5%9B%BE/"/>
    <id>http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-5%E5%A0%86%E6%A0%88%E6%8F%90%E5%8D%87-%E5%A0%86%E6%A0%88%E5%9B%BE/</id>
    <published>2025-11-08T18:59:33.000Z</published>
    <updated>2025-11-08T18:59:33.323Z</updated>
    
    
    
    
    
  </entry>
  
  <entry>
    <title>初见二进制/汇编/1.4标志寄存器_JCC</title>
    <link href="http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-4%E6%A0%87%E5%BF%97%E5%AF%84%E5%AD%98%E5%99%A8-JCC/"/>
    <id>http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-4%E6%A0%87%E5%BF%97%E5%AF%84%E5%AD%98%E5%99%A8-JCC/</id>
    <published>2025-11-08T18:50:11.000Z</published>
    <updated>2025-11-22T06:42:36.325Z</updated>
    
    <content type="html"><![CDATA[<h2 id="根据教程视频，以下均以32位计算机为例"><a href="#根据教程视频，以下均以32位计算机为例" class="headerlink" title="根据教程视频，以下均以32位计算机为例"></a>根据<a href="https://www.bilibili.com/video/BV1w54y1y7Di?spm_id_from=333.788.videopod.episodes&vd_source=6c7f9b089a676f27a9991651bb982255&p=6">教程</a>视频，以下均以32位计算机为例</h2><p>Push的时候是立即数就永远-4<br>Push 寄存器时，al（八位），不行<br>Push ax（16位） 可以，会-2<br>Push32位寄存器&#x2F;容器，会-4<br>也可以push一块内存（dword），把这内存的值push到目标位置（同样-4）<br>Push word，则-2<br>Push的是跟容器的宽度一样的，同样内存也不能push八位</p><p>Pop同理无8位，按照宽度pop，ax就+2…..</p><h3 id="堆栈平衡"><a href="#堆栈平衡" class="headerlink" title="堆栈平衡"></a>堆栈平衡</h3><p>Pushad指令<br>把8个通用寄存器的值存到内存（堆栈）去了<br>Popad指令<br>把刚刚pushad的值又放回去了（你用pushad折腾完了想恢复原来的模样就popad一下）</p><h4 id="所需知识"><a href="#所需知识" class="headerlink" title="所需知识"></a>所需知识</h4><p>PE结构</p><p>下断点<br>Bp xxx→让xxx一执行的时候就断下来，下断点了</p><p>Win32  Api</p><p>什么是函数调用</p><p>熟悉堆栈，画堆栈图<br>栈顶最开始存储的是调用这个函数的时候函数的返回地址，follow过去看call的位置，看函数在哪调用的</p><p>Call  jcc 标志寄存器<br>Je看0&#x2F;1，0就没跳<br>Cmp （compare比较）<br>Jcc指令由标志寄存器控制，JE→由Z控制，改后面的0&#x2F;1就可以控制是否运行<br>或直接把je改成jmp保存就跳到那边比较方便</p><h2 id="标志寄存器（EFL）"><a href="#标志寄存器（EFL）" class="headerlink" title="标志寄存器（EFL）"></a>标志寄存器（EFL）</h2><p>标色的位无法控制是默认的<br>研究这种先确定宽度<br>ELF一般都给你拆好了，但自己也要会看<br>Eg：ELF是202，→0010 0000 0010，你看这里的CF对应最后一个位，0.然后倒二个是默认的1，P位是0，P后面一位默认0…..</p><p>1.进位标志寄存器CF（对应整个标志寄存器最后一个值）C<br>C看的是最高位有没有进位，不是数据的最低位！！！<br>然后再看最高位是否产生进位借位，最高位由数据宽度决定。<br>Eg：<br>对于55550000<br>mov al，0xFF<br>Add al，1<br>然后此时C会从0变成1，放C那边了，因为al是8位，此时并没有改变到原本值的数字！对应寄存器还是显示55550000（所以要说确定数据宽度）</p><p>2.奇偶标志寄存器PF<br>用来反映结果里（转成二进制后）1的个数，也就是1的个数的奇偶性，1为偶数个就是1，奇数个就是0</p><p>3.辅助进位标志AF<br>32位宽转换到16进制，如FFFFFFFF，它看什么，此时看FFFFFFFF标注的那一位是否向前进位，若进则变为1<br>16位时候，FFFF；8位时候，FF</p><p>4.零标志ZF<br>用来反映运算结果是否为0，它变成1则表示你的计算结果是0！！<br>Mov这种就不算运算了，不改寄存器！！<br>Xor，sub<br>清零可以xor自己！且影响标志位Z</p><p>5.符号标志SF<br>反映运算结果的符号位，运算结果与最高位相同（二进制，对应宽度最高位）</p><p>6.溢出标志OF<br>同样是以自己角度定义，所以加出来值不会变，变得是我们看待它的方式<br>C位溢出<br>做无符号运算时最应该关注的寄存器是C！因为此运算主要改变的是C，所以我们看c相当于看无符号有没有溢出，以此为标志，以下同理<br>O位溢出<br>有符号运算就看OF这个寄存器</p><p>在这种表达下，一个正数加一个负数永远不会溢出！！<br>正正相加结果负数&#x2F;负负相加结果正数 则溢出！<br>此时OF是1</p><p>C O都溢出也有可能。</p><h3 id="指令"><a href="#指令" class="headerlink" title="指令"></a>指令</h3><p>ADC（carry）指令：带进位加法<br>两边不能同时内存，且宽度要一样</p><p>SBB（borrow）：带借位减法<br>同上</p><p>XCHG：交换数据<br>同上，且不能是立即数</p><p>MOVS：移动数据，内存-内存，前后宽一样<br>后面值取相应位到前面，可写为movsd，代表一次四字节，以此类比其他<br>注意，移完栈top&#x2F;base会各加相应4或2等等，取决于字节</p><p>方向位寄存器DF（direction）<br>0则加（正方向）改变地址栈针这样<br>1则减（负方向）</p><p>STOS：将AL&#x2F;AX&#x2F;EAX的值存到[EDI]指定的内存单元<br>一定要写ES:[EDI]<br>向EDI存多少，由前面要求的字，字节等决定，EDI的增长方向由D决定</p><p>REP（repeat，重复）：按计数寄存器ECX中指定的次数重复执行后面写的指令（注意是十六进制的数字，记得换算，例如10是16）</p><h3 id="补充：CF借位，最高位进行借位，则其值为1"><a href="#补充：CF借位，最高位进行借位，则其值为1" class="headerlink" title="补充：CF借位，最高位进行借位，则其值为1."></a>补充：CF借位，最高位进行借位，则其值为1.</h3><p>PF，以1的奇偶个数来取0或1，看的是最低有效字节！！！即为只检验最后一字节的奇偶<br>OF，有符号的溢出。符号位有进位，则1。最高有效位（紧挨符号位那个），有进位，则0；<br>以上两个的xor为OF值</p><h3 id="想要改变cpu的行为，修改EIP寄存器（决定cpu下一行执行的代码-存储地址）"><a href="#想要改变cpu的行为，修改EIP寄存器（决定cpu下一行执行的代码-存储地址）" class="headerlink" title="想要改变cpu的行为，修改EIP寄存器（决定cpu下一行执行的代码&#x2F;存储地址）"></a>想要改变cpu的行为，修改EIP寄存器（决定cpu下一行执行的代码&#x2F;存储地址）</h3><p>Mov不可以改变eip，但可利用jmp改变eip！（没有附加条件）Jmp没法跳转！！唯一的作用就是修改eip！！！<br>本质是Cpu走的时候根据eip的值决定去哪里</p><h3 id="哪些代码可以修改eip？"><a href="#哪些代码可以修改eip？" class="headerlink" title="哪些代码可以修改eip？"></a>哪些代码可以修改eip？</h3><p>Jmp（无条件直接走）<br>Jmp寄存器&#x2F;立即数</p><p>Call指令（出去旅游）<br>记得下断点<br>Mov eip，同时也修改了ESP！把call下一行指令的地址（call地址加5（字节））压到栈里（返回地址）。Eip检查&#x2F;堆栈检查，调用程序时以及把返回地址压到堆栈里去了，检查就是检查返回地址是不是允许的那个值。</p><p>Ret（return旅游回家）<br>Call与ret成对出现。<br>ret相当于pop eip（同样也不允许使用这个指令）</p><h3 id="比较指令"><a href="#比较指令" class="headerlink" title="比较指令"></a>比较指令</h3><p>Cmp指令<br>用于比较两个数是否相等，第一个数是否比第二个数大，当s被更改时，则第一个数一定比第二个数小（因为最高位被更改了，即为溢出）<br>Cmp  r&#x2F;m，r&#x2F;m&#x2F;imm<br>不能同时为内存&#x2F;宽度要一样<br>当使用时，只改变标志寄存器的值<br>实质是相减来比较，相当于sub，但不改变寄存器的值，只更改标志寄存器。</p><p>Test指令<br>一定程度上与cmp类似，两个目标进行AND操作，结果不保存（不更改除了标志寄存器外的东西）<br>常见用法：判断某个寄存器是否为空（全0），test eax，eax<br>因为只要存在一位不为0，那么计算结果不为0<br>可影响P（最后一个有效字节）…这个情景下主要还是看Z（是否为0）</p><p>Jcc 注意有符号无符号和怎么跳的<br>不影响值，不影响堆栈，只影响eip，与jmp区别在于他加了跳转条件<br>不管上面指令是什么，它不认识，只要现在标志寄存器符合条件就跳！</p><p>JE&#x2F;JZ，选其一，二者一样。jmp equal和jmp zero，意思为结果为零ZF&#x3D;1时跳转</p><p>JNE&#x2F;JNZ，jmp not equals&#x2F;jmp not zero，ZF&#x3D;0时候跳转（就是结果不为0）</p><p>JS，只要SF为1就跳（结果为负时跳转）</p><p>JNS同理,SF&#x3D;0则跳转</p><p>JP&#x2F;JPE，PF&#x3D;1时跳（结果中1的个数为偶数）</p><p>JNP&#x2F;JPO,PF&#x3D;0</p><p>JO，OF&#x3D;1,结果溢出了则跳转<br>JNO，结果非溢出跳转OF&#x3D;0</p><p>JB&#x2F;JNAE小于时跳转CF&#x3D;1</p><p>JNB&#x2F;JAE 大于等于CF&#x3D;0</p><p>JBE&#x2F;JAE小于等于CF&#x3D;1&#x2F;ZF&#x3D;1</p><p>JNBE&#x2F;JA，大于则跳转（无符号数），CF&#x3D;0&amp;&amp;ZF&#x3D;0</p><p>JL&#x2F;JNGE小于则跳转（有符号数）SF!&#x3D;OF</p><p>JNL&#x2F;JGE大于等于则跳转（有符号数）SF&#x3D;OF</p><p>JLE&#x2F;JNG小于则跳转（有符号数）ZF&#x3D;1&#x2F;SF!&#x3D;OF</p><p>JNLB&#x2F;JG大于则跳转（有符号数）ZF&#x3D;0&amp;&amp;SF&#x3D;OF</p><p>b小于<br>Nlb不小于也不等于<br>G是大于的意思</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;a href=&quot;#根据教程视频，以下均以32位计算机为例&quot; class=&quot;headerlink&quot; title=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;/a&gt;根据&lt;a href=&quot;https://www.bilibi</summary>
      
    
    
    
    
    <category term="总结" scheme="http://example.com/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="汇编" scheme="http://example.com/tags/%E6%B1%87%E7%BC%96/"/>
    
    <category term="课报" scheme="http://example.com/tags/%E8%AF%BE%E6%8A%A5/"/>
    
  </entry>
  
  <entry>
    <title>初见二进制/汇编/1.3栈的初步认识_堆栈</title>
    <link href="http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-3%E6%A0%88%E7%9A%84%E5%88%9D%E6%AD%A5%E8%AE%A4%E8%AF%86-%E5%A0%86%E6%A0%88/"/>
    <id>http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-3%E6%A0%88%E7%9A%84%E5%88%9D%E6%AD%A5%E8%AE%A4%E8%AF%86-%E5%A0%86%E6%A0%88/</id>
    <published>2025-11-08T18:27:27.000Z</published>
    <updated>2025-11-16T12:37:47.256Z</updated>
    
    <content type="html"><![CDATA[<h3 id="结合wiki来简单认识栈"><a href="#结合wiki来简单认识栈" class="headerlink" title="结合wiki来简单认识栈"></a>结合wiki来简单认识<a href="https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/stack-intro/">栈</a></h3>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;结合wiki来简单认识栈&quot;&gt;&lt;a href=&quot;#结合wiki来简单认识栈&quot; class=&quot;headerlink&quot; title=&quot;结合wiki来简单认识栈&quot;&gt;&lt;/a&gt;结合wiki来简单认识&lt;a href=&quot;https://ctf-wiki.org/pwn/linux</summary>
      
    
    
    
    
    <category term="总结" scheme="http://example.com/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="汇编" scheme="http://example.com/tags/%E6%B1%87%E7%BC%96/"/>
    
    <category term="课报" scheme="http://example.com/tags/%E8%AF%BE%E6%8A%A5/"/>
    
  </entry>
  
  <entry>
    <title>初见二进制/汇编/1.2通用寄存器_认识指令_内存读写</title>
    <link href="http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-2%E9%80%9A%E7%94%A8%E5%AF%84%E5%AD%98%E5%99%A8-%E8%AE%A4%E8%AF%86%E6%8C%87%E4%BB%A4-%E5%86%85%E5%AD%98%E8%AF%BB%E5%86%99/"/>
    <id>http://example.com/2025/11/09/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-2%E9%80%9A%E7%94%A8%E5%AF%84%E5%AD%98%E5%99%A8-%E8%AE%A4%E8%AF%86%E6%8C%87%E4%BB%A4-%E5%86%85%E5%AD%98%E8%AF%BB%E5%86%99/</id>
    <published>2025-11-08T18:08:13.000Z</published>
    <updated>2025-11-10T11:14:01.338Z</updated>
    
    <content type="html"><![CDATA[<h2 id="根据教程视频，以下均以32位计算机为例"><a href="#根据教程视频，以下均以32位计算机为例" class="headerlink" title="根据教程视频，以下均以32位计算机为例"></a>根据<a href="https://www.bilibili.com/video/BV1w54y1y7Di?spm_id_from=333.788.videopod.episodes&vd_source=6c7f9b089a676f27a9991651bb982255&p=6">教程</a>视频，以下均以32位计算机为例</h2><h1 id="一-通用寄存器（32位计算机）"><a href="#一-通用寄存器（32位计算机）" class="headerlink" title="一.通用寄存器（32位计算机）"></a>一.通用寄存器（32位计算机）</h1><table><thead><tr><th>32位</th><th>16位</th><th>8位低↓高</th><th>编号</th></tr></thead><tbody><tr><td>EAX</td><td>AX</td><td>AL</td><td>0</td></tr><tr><td>ECX</td><td>CX</td><td>CL</td><td>1</td></tr><tr><td>EDX</td><td>DX</td><td>DL</td><td>2</td></tr><tr><td>EBX</td><td>BX</td><td>BL</td><td>3</td></tr><tr><td>ESP</td><td>SP</td><td>AH</td><td>4</td></tr><tr><td>EBP</td><td>BP</td><td>CH</td><td>5</td></tr><tr><td>ESI</td><td>SI</td><td>DH</td><td>6</td></tr><tr><td>EDI</td><td>DI</td><td>BH</td><td>7</td></tr></tbody></table><h3 id="ps：eip显示的是当前程序运行处"><a href="#ps：eip显示的是当前程序运行处" class="headerlink" title="ps：eip显示的是当前程序运行处"></a>ps：eip显示的是当前程序运行处</h3><p><code>其它寄存器主要用途在此先不做介绍</code></p><p>为何分出不同位？<br>减小不必要的损耗，8位能表示的就不必用32位表示。</p><h2 id="寄存器结构"><a href="#寄存器结构" class="headerlink" title="寄存器结构"></a>寄存器结构</h2><table><thead><tr><th>31</th><th>15</th><th>7</th><th>0</th></tr></thead><tbody><tr><td>EAX</td><td>AX</td><td>AH</td><td>AL</td></tr><tr><td>ECX</td><td>CX</td><td>CH</td><td>CL</td></tr><tr><td>EDX</td><td>DX</td><td>DH</td><td>DL</td></tr><tr><td>EBX</td><td>BX</td><td>BH</td><td>BL</td></tr><tr><td>ESP</td><td>SP</td><td></td><td></td></tr><tr><td>EBP</td><td>BP</td><td></td><td></td></tr><tr><td>ESI</td><td>SI</td><td></td><td></td></tr><tr><td>EDI</td><td>DI</td><td></td><td></td></tr></tbody></table><h1 id="二-常用汇编指令"><a href="#二-常用汇编指令" class="headerlink" title="二.常用汇编指令"></a>二.常用汇编指令</h1><p><code>r代表寄存器，m代表相应内存空间,imm代表相应位的立即数（一般16进制）</code></p><p><code>说几位就几位，不够会补0，溢出会覆盖等等</code></p><p><code>数溢出时，只从最低位开始存，多余被去除</code></p><h2 id="1-mov"><a href="#1-mov" class="headerlink" title="1.mov"></a>1.mov</h2><h4 id="实质：操作码-操作数"><a href="#实质：操作码-操作数" class="headerlink" title="实质：操作码+操作数"></a>实质：操作码+操作数</h4><pre><code>目标操作数：立即数，通用寄存器，段寄存器等等源操作数：同上在不搞小动作的情况下，操作数的宽度一般要一样，源操作数和目标操作数不为同一单元</code></pre><h3 id="用法："><a href="#用法：" class="headerlink" title="用法："></a>用法：</h3><pre><code>mov 目标操作数，源操作数</code></pre><h3 id="语法："><a href="#语法：" class="headerlink" title="语法："></a>语法：</h3><pre><code>目标操作数可为：        1.r/m8(16,32),r8(16,32)      2.r8(16,32),r/m8(16,32)    3.r8(16,32),imm8(16,32)</code></pre><h2 id="2-add"><a href="#2-add" class="headerlink" title="2.add"></a>2.add</h2><h2 id="3-sub"><a href="#3-sub" class="headerlink" title="3.sub"></a>3.sub</h2><h3 id="4-and"><a href="#4-and" class="headerlink" title="4.and"></a>4.and</h3><h3 id="5-or"><a href="#5-or" class="headerlink" title="5.or"></a>5.or</h3><h3 id="6-xor"><a href="#6-xor" class="headerlink" title="6.xor"></a>6.xor</h3><h3 id="7-not"><a href="#7-not" class="headerlink" title="7.not"></a>7.not</h3><h1 id="三-内存"><a href="#三-内存" class="headerlink" title="三.内存"></a>三.内存</h1><p>简要介绍</p><h2 id="1-内存格式"><a href="#1-内存格式" class="headerlink" title="1.内存格式"></a>1.内存格式</h2><h2 id="2-读写内存"><a href="#2-读写内存" class="headerlink" title="2.读写内存"></a>2.读写内存</h2><h2 id="3-内存寻址"><a href="#3-内存寻址" class="headerlink" title="3.内存寻址"></a>3.内存寻址</h2>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;a href=&quot;#根据教程视频，以下均以32位计算机为例&quot; class=&quot;headerlink&quot; title=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;/a&gt;根据&lt;a href=&quot;https://www.bilibi</summary>
      
    
    
    
    
    <category term="总结" scheme="http://example.com/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="汇编" scheme="http://example.com/tags/%E6%B1%87%E7%BC%96/"/>
    
    <category term="课报" scheme="http://example.com/tags/%E8%AF%BE%E6%8A%A5/"/>
    
  </entry>
  
  <entry>
    <title>初见二进制/汇编/1.1数据宽度_逻辑运算</title>
    <link href="http://example.com/2025/11/08/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-1%E6%95%B0%E6%8D%AE%E5%AE%BD%E5%BA%A6-%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/"/>
    <id>http://example.com/2025/11/08/%E5%88%9D%E8%A7%81%E4%BA%8C%E8%BF%9B%E5%88%B6-%E6%B1%87%E7%BC%96-1-1%E6%95%B0%E6%8D%AE%E5%AE%BD%E5%BA%A6-%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/</id>
    <published>2025-11-08T15:30:32.000Z</published>
    <updated>2025-11-08T19:01:26.161Z</updated>
    
    <content type="html"><![CDATA[<h2 id="根据教程视频，以下均以32位计算机为例"><a href="#根据教程视频，以下均以32位计算机为例" class="headerlink" title="根据教程视频，以下均以32位计算机为例"></a>根据<a href="https://www.bilibili.com/video/BV1w54y1y7Di?spm_id_from=333.788.videopod.episodes&vd_source=6c7f9b089a676f27a9991651bb982255&p=6">教程</a>视频，以下均以32位计算机为例</h2><h1 id="一-数据宽度"><a href="#一-数据宽度" class="headerlink" title="一.数据宽度"></a>一.数据宽度</h1><p>4位→可表示1位16进制0至F，以此类推。<br>8位→2位16,00至FF<br>16位→4位16,0000至FFFF<br>32位→8位16,00000000至FFFFFFFF</p><p>人为定义有&#x2F;无符号</p><p>0 1 2 3 4 5 6 7 8 9 A B C D E F<br>每个数怎么表示是可以定义来的，如<code>顺序定义为0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15</code>或<code>补码定义0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1</code>此处不做详解</p><p>”1开头为负数“的理解则代表后半部分能表示的数以一开头，而刚好此部分全被定义为负数。</p><h2 id="简单了解计量单位"><a href="#简单了解计量单位" class="headerlink" title="简单了解计量单位"></a>简单了解计量单位</h2><table><thead><tr><th>英文</th><th>中文</th><th>换算关系</th></tr></thead><tbody><tr><td>BIT</td><td>位</td><td>基础构成单元,一般以二进制呈现，为0或1</td></tr><tr><td>BYTE</td><td>字节</td><td>1字节&#x3D;8位</td></tr><tr><td>WORD</td><td>字</td><td>此情况下1字通常为16位，即为2字节</td></tr><tr><td>DWORD</td><td>双字</td><td>1字*2，通常为4字节</td></tr></tbody></table><h1 id="二-逻辑运算"><a href="#二-逻辑运算" class="headerlink" title="二.逻辑运算"></a>二.逻辑运算</h1><table><thead><tr><th>英文</th><th>中文</th><th>符号</th><th>用途</th></tr></thead><tbody><tr><td>OR</td><td>或</td><td>“</td><td>“</td></tr><tr><td>AND</td><td>与</td><td>&amp;</td><td>置0&#x2F;进位</td></tr><tr><td>XOR</td><td>异或</td><td>^</td><td>位加法，实质2的模运算，加密</td></tr><tr><td>NOT</td><td>非</td><td>!</td><td>翻转</td></tr></tbody></table><h2 id="以4位为例"><a href="#以4位为例" class="headerlink" title="以4位为例"></a>以4位为例</h2><h3 id="1-计算2-3"><a href="#1-计算2-3" class="headerlink" title="1.计算2+3"></a>1.计算2+3</h3><p>容器：<br>X：0010(2)<br>Y：0011(3)</p><p>对每位:<br>    0010<br> ^0011<br>    0001<br><code>R：0001</code></p><p>进位:<br>    0010<br> &amp;0011<br>    0010<br><code>同时0010&lt;&lt;1==0100(左移1位)</code><br>    此时0100！&#x3D;0000，所以继续运算</p><p>R→X:0001<br>Y:0100</p><p>对每位:<br>    0001<br>  ^0100<br>    0101<br><code>R：0101</code></p><p>进位:<br>    0001<br> &amp;0100<br>    0000<br><code>同时0000&lt;&lt;1==0000(左移1位),此操作后仍为0则计算完毕，此时R的0101即为结果</code></p><h5 id="所以2-3-5（0101）"><a href="#所以2-3-5（0101）" class="headerlink" title="所以2+3&#x3D;5（0101）"></a>所以2+3&#x3D;5（0101）</h5><h3 id="2-计算2-3"><a href="#2-计算2-3" class="headerlink" title="2.计算2-3"></a>2.计算2-3</h3><p>同理，X:0010<br>Y:0011→（进行补码运算，模16）1101</p><p>对每位:<br>    0010<br>  ^1101<br>    1111<br><code>R：1111</code></p><p>进位:<br>    0010<br> &amp;1101<br>    0000<br><code>同时0000&lt;&lt;1==0000(左移1位)，此操作后进位计算完毕</code></p><h5 id="所以2-3-1（1111为补码表示，对应原码-1）"><a href="#所以2-3-1（1111为补码表示，对应原码-1）" class="headerlink" title="所以2-3&#x3D;-1（1111为补码表示，对应原码-1）"></a>所以2-3&#x3D;-1（1111为补码表示，对应原码-1）</h5><h3 id="3-如何获取某value的第N位？"><a href="#3-如何获取某value的第N位？" class="headerlink" title="3.如何获取某value的第N位？"></a>3.如何获取某value的第N位？</h3><p>  利用&amp;操作置0：<br>    10001111<br>  &amp;00001000<br>    00001000</p><h3 id="4-利用xor加密"><a href="#4-利用xor加密" class="headerlink" title="4.利用xor加密"></a>4.利用xor加密</h3><pre><code>明：2015key：54</code></pre><p>加密过程：<br>   00100000(取20的8位明文为例)<br>^01010100(key)<br>  01110100(密文）</p><p>解密过程：<br>   01110100(key)<br>^01010100(密文)<br>  00100000(明文)</p><h2 id="汇编语言"><a href="#汇编语言" class="headerlink" title="汇编语言"></a>汇编语言</h2><p><code>mov</code></p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//将2赋值给eax寄存器</span></span><br><span class="line">mov eax,<span class="number">2</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;a href=&quot;#根据教程视频，以下均以32位计算机为例&quot; class=&quot;headerlink&quot; title=&quot;根据教程视频，以下均以32位计算机为例&quot;&gt;&lt;/a&gt;根据&lt;a href=&quot;https://www.bilibi</summary>
      
    
    
    
    
    <category term="总结" scheme="http://example.com/tags/%E6%80%BB%E7%BB%93/"/>
    
    <category term="汇编" scheme="http://example.com/tags/%E6%B1%87%E7%BC%96/"/>
    
    <category term="课报" scheme="http://example.com/tags/%E8%AF%BE%E6%8A%A5/"/>
    
  </entry>
  
  <entry>
    <title>ABOUT ME, LXIOS</title>
    <link href="http://example.com/2025/10/19/ABOUT-ME-LXIOS/"/>
    <id>http://example.com/2025/10/19/ABOUT-ME-LXIOS/</id>
    <published>2025-10-19T08:54:07.000Z</published>
    <updated>2025-11-08T15:51:36.060Z</updated>
    
    <content type="html"><![CDATA[<h3 id="这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行"><a href="#这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行" class="headerlink" title="这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行"></a>这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行</h3><h2 id="目前专注于ctf二进制，密码以及超级计算机相关知识的学习，会不定期更新一些学习周报，或者发布一些日常心得等等"><a href="#目前专注于ctf二进制，密码以及超级计算机相关知识的学习，会不定期更新一些学习周报，或者发布一些日常心得等等" class="headerlink" title="目前专注于ctf二进制，密码以及超级计算机相关知识的学习，会不定期更新一些学习周报，或者发布一些日常心得等等"></a>目前专注于ctf二进制，密码以及超级计算机相关知识的学习，会不定期更新一些学习周报，或者发布一些日常心得等等</h2><h1 id="blog仍在搭建ing"><a href="#blog仍在搭建ing" class="headerlink" title="blog仍在搭建ing"></a>blog仍在搭建ing</h1>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行&quot;&gt;&lt;a href=&quot;#这里是一只苦逼大学牲的博客，你可以称呼我灼心或者地瓜，当然，正经名字是Lxios，随你喜好就行&quot; class=&quot;headerlink&quot; title</summary>
      
    
    
    
    
    <category term="hexo" scheme="http://example.com/tags/hexo/"/>
    
    <category term="萌新" scheme="http://example.com/tags/%E8%90%8C%E6%96%B0/"/>
    
    <category term="喵喵喵" scheme="http://example.com/tags/%E5%96%B5%E5%96%B5%E5%96%B5/"/>
    
  </entry>
  
</feed>
