学习汇编语言有什么好处?
网友解答: 小秘书邀请我来答这个题,不过我没有真正系统地学过汇编,但正是因为我没怎么学过,所以我在网络安全工作中也深受不懂汇编的苦处,就从我的苦处了解一下学习汇编的好处吧。一、不能第一时
小秘书邀请我来答这个题,不过我没有真正系统地学过汇编,但正是因为我没怎么学过,所以我在网络安全工作中也深受不懂汇编的苦处,就从我的苦处了解一下学习汇编的好处吧。
一、不能第一时间分析和挖掘出二进制漏洞
举个例子,CVE-2018-4878的0日漏洞出现时,虽然网上有很多样本,但我只是能看个大概,根本看不懂一些高手的分析流程,举个例子如下图。
所以我要利用此漏洞时,只能等待别人的写的生成器了,生成的poc样本不免杀我也是毫无办法,看这些汇编代码真是像文盲看书一样。
二、不能自己破解一些软件来使用
这个不要和我扯上版权、知识收费等字眼。从事网络安全工作中的人都知道,一些好用的必备的很多软件基本都收费的。像burpsuite、Acunetix Web Vulnerability Scanner等等。如果自己不会破解,就要到处上网找破解版了,而且还很担心破解版里边有没有后门,担心黑吃黑的问题。
三、自己写的软件,很可能不是最佳的
自己写的软件,遇到性能优化、软件崩溃,很可能找不到真正的原因,这时后汇编很可能是你最后一根稻草了。另外,学习了汇编后,对学习c、c++之类的高级语言,会加深很多理解的。据说很多汇编高手,看到汇编代码,脑子里已经有c语言的映射图了。还有呀,像下图这样的东西:
我们不懂汇编的只能重启了,汇编高手估计拿起ollydbg就找到真正的原因了。
应当这样讲,从事网络安全工作不一定要会汇编,但是不学不精通汇编,是成不了真正的顶尖高手的。
网友解答:汇编作为一个古老的语言,除了特定领域比如嵌入式开发的boot loader部分以及做逆向及破解工程方面外,实际上基本上很少能接触的到。但是虫虫还是强烈建议所有搞CS和IT的同学一要学一些汇编知识,为什么呢?
理解计算机体系结构汇编可以让人你真正理解计算机体系结构,让你知道程序是怎么被硬件执行的?
内存是怎么用的,cpu怎么计算的,为什么你计算机的“1+1”就解决了我们现实中这么多的问题。
计算机一个典型的体系结构如下:
包括了cpu ,RAM内存、总线,其他组件,所有这些怎么和CPU打交道的呢?
其实上很简单,cpu只管从内存的特定地址去数据(指令)执行,然后返回给特定的地址,其他硬件也是存取特定地址的内存地址。
CPU都有特定的几个存储单元,叫寄存器(指令放进来,执行,然后还下一个指令),比如CS、DS、SS、ES、IP等,其中CS和IP是最重要的两个寄存器,CS:IP的地址表示的是当前CPU处理的指令。比如下面就是一个cpu执行的实例:
总之,CPU执行程序就是CS:IP给他喂什么内容他就执行什么内容,其他的他一律不管。
如何学习汇编语言虫虫建议的是不必要深入,起码的有知道,了解,比如上面提到那些执行过程,当然还有内存管理,学完了你就真正知道指针啊、栈啊、堆啊这些是怎么回事。
学习汇编语言,买一本书王爽老师的《汇编语言》,耐心地读下去,读懂就行了,一般没必要会用,会精通。
汇编能力层级:最后附带一个别人总结的汇编能力,如果有心对它做深造的可以研究下:
另外还有一本书,在学了王爽书以后,可以做为进阶用的。推荐《Assembly Language for x86 Processors 6th Edition》