Linux汇编和Shellcoding-1 汇编语言简介
1. 什么是汇编语言
•汇编语言(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
特点:
高效简洁
抽象难懂
与处理器对应
2. 为什么要学习汇编语言
由于汇编语言更偏向于计算机底层,所以学习汇编语言能够更好地了解计算机运行原理。
高级语言(C,C++)编写的程序难以还原源码,但可以反汇编成汇编语言,掌握汇编语言就能分析未知源码的程序如病毒、木马、外挂、竞品分析等。
学好汇编语言是从事软件逆向工程以及网络安全方面工作的基础。
特别是对于想成为真正黑客,不管是白帽子还是黑帽子,学好汇编都是非常重要的。
对于脚本小子,如果滥用黑客工具,就会面临螳螂捕蝉黄雀在后的局面,下面两篇文章更能说明这一问题:
网络小黑揭秘系列之黑产江湖黑吃黑—中国菜刀的隐形把手
http://drops.wooyun.org/papers/13128
黑吃黑:鬼影DDoS黑客追踪
http://www.freebuf.com/articles/terminal/90121.html
http://drops.wooyun.org/papers/13128
黑吃黑:鬼影DDoS黑客追踪
http://www.freebuf.com/articles/terminal/90121.html
3. 汇编语言与高级语言
汇编语言的运行过程:程序员编写汇编程序,通过汇编器、链接器编译成二进制格式的文件,交给计算机运行:
高级语言(C,C++,Delphi等)编写的代码需要经过预处理器处理(比如宏代码),再经过编译器、汇编器汇编译成汇编代码,最后链接其他库文件最终形成二进制代码。
4. 实验环境:
VMWare软件
• Ubuntu12.04 LTs 32-bit Edition
NASM汇编语言编译程
安装: sudo apt-get install nasm build-essential
5. 在Ubuntu系统中查看CPU信息
1) 通过lscpu命令查看
2). cat /proc/cpuinfo
通过 cat /proc/cpuinfo 我们还可以了解到CPU支持的指令集:比如FPU,MMX,SSE,SSE2等等。