掌握黑客技术一大难点就在于你要非常深入计算机技术的底层。绝大多数程序员只愿意在上层应用上花点时间,毕竟他们只想”混饭吃“,任何有志于不断提升技术能力的工程师都必须跨过几个高门槛,一个是算法,一个是系统设计,还有就是掌握计算机体系结构,与底层,与硬件打交道,这些知识点难度大,有些甚至很枯燥,因此愿意专研的人不多,我们本节所要描述的汇编语言就属于计算机体系结构的一部分。
一名真正的黑客,不是那些只会使用工具搞些歪门邪道的门外汉,掌握汇编语言在关键时刻使用反汇编技术进行分析不可避免。在这里我们对汇编语言做初步掌握,真正要学会,我强烈推荐王爽老师的《汇编语言》。
信息计算最显著的特点就是抽象,特别是针对编程语言,在最顶层是高级语言例如java,python等,它们会被编译器先编译成汇编语言,然后再由汇编编译器将其编译成CPU能执行的字节码,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ifKIEmW-1600135454614)(https://img-service.csdnimg.cn/img_convert/483e76f0da4600053f850c50bd6fd3d3.png)]
不管是PC平台还是手机等移动平台,其对应的汇编语言会有所不同但指令的作用都差不多,要不就是mov,将数据从一个地方挪到一个地方,要不就是jump,将程序控制流从一个地方转移到另一个地方,因此掌握一种汇编语言,对于其他类型的汇编也能很容易搞懂,因此这里我们集中精力与掌握x86汇编。
我们先看程序加载到内存后其布局方式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QymqazU1-16001354