前言和声明

安全工程师这条路任重道远。如今国际形势复杂,网络战一旦爆发,安全势力弱的一方很快会处于竞争的下风,加上国家的安全人才缺口过大,我辈则应当肩挑重担,为祖国安全尽一份力。


本博客是博主在学习看雪学院《汇编语言详解与二进制漏洞初阶》课程的笔记,笔记中大部分是对课程作业的解答,少部分是博主补充的知识。
如若转载,请声明出处。谢谢。
与广大有心朝安全方向前进的网友们共勉之。

另注:本博客会持续更新到课程学习完毕。

汇编语言部分

学习汇编语言的意义

  • 开发遇到bug时调试更加便利。在用高级语言进行调试时往往会遇到一些非常难以调试出来的bug,此时程序员若能将高级语言代码反汇编成汇编代码来进行调试则可以提高调试效率。
  • 逆向分析时的代码阅读。逆向分析时,所分析的软件对于分析者来说其实是一个“黑盒”,此时若不懂汇编语言则将寸步难行。
  • 对某些特殊技术的使用。用高级语言编写的程序往往占较大的内存,当程序员编写shellcode、壳等代码时,要尽量压缩其大小,此时汇编语言则大有用处,因为使用汇编语言编写程序时可以精确到字节。

    shellcode: 能在一个完整程序中的任意位置运行的代码。

EFLAGS寄存器

EFLAGS寄存器包含了独立的二进制位,用于控制CPU操作,或是反应一些CPU操作的结果。有些指令可以测试和控制这些单独的处理器标志位。