0x00汇编初入--前期准备

一.汇编工具

  在linux平台下常用的编译器为as,连接器为ld,使用的文本编辑器为vim,汇编语法为att
  以下是一些工具:
    addr2line  把地址转换为文件名和行号
    ar  创建,修改和展开文件存档
    as  汇编器
    c++filt  还原c++符号过滤器
    gprof  显示程序简档信息
    ld 把目标代码文件链接
    nlmconv  把目标代码转换为Netware loadable Module格式
    nm  列出目标文件中的符号
    objcopy  复制和翻译目标文件
    objdump  显示来自目标文件的信息
    ranlib 生成存档文件的索引
    readelf 按照elf格式显示来自目标文件的信息
    size  列出目标文件或者存档文件的段长度
    strings 显示目标文件中可打印的字符串
    strip 丢弃符号
    windres 编译windows资源文件

   上面是GNU的开发包binutils中的工具,我们主要用到as和ld这两个工具,也可以直接使用gcc,我们使用gdb进行调试.

二.汇编工具使用基础

 1.使用as与ld 

  a.使用as,把汇编文件转换成目标文件,基本用法如下:

  1 as -- -o xxx.o xxx.s

  其中--32是告诉汇编器生成32位的目标文件,如果系统是32位的可以不加这个参数,64位的系统请加上这个.

  b.使用ld连接目标文件,基本用法如下:

  1 ld -m elf_i386 -o xxx xxx.

  其中-m elf_i386也是因为32位系统的原因.

 2.使用gcc

  我们可以写个简单的helloworld

  

  1 #include <stdio.h>
  2
   int main()
   {
   printf("Hello world!\n");
   return ;
   }

  把文件保存为helloworld.c,使用以下命令可以得到它的汇编代码

  1 gcc -S helloworld.c

  编译文件,命令如下

  1 gcc helloworld.c -o helloworld

 3.使用gdb

  我们可以使用gdb来调试程序,可以使用以下命令载入文件(使用gdb调试的文件,须在编译时加入-g这一个参数)

  1 gdb -q xxx
  // 或者已经启动gdb,我们可以使用file xxx

  gdb的常用命令有,如下:

    break 设置断点

    watch 设置监视点

    info 观察系统元素

    x 检查内存位置

    print 显示变量值

    run 运行程序

    list 列出指定函数或者行

    next 执行下一条指令

    step 执行下一条指令

    cont 从停止的位置继续执行程序

    until  运行程序直到指定行

 4.使用objdump

   这个工具我经常使用可以进行反汇编,很容易得到程序汇编代码

    

  1 objdump -d xxx

三.结尾

  我没有直接写helloword的博文当开始,我准备第二篇再写,我觉得"工欲善其事,必先利其器",先写相关工具的使用比较好.至于什么汇编,以及计算机原理后面,继续慢慢研究吧^_^   最起码已经开始学习了!!!

最新文章

  1. Net设计模式实例之原型模式( Prototype Pattern)
  2. poj 1273 最大流
  3. ios项目总结一:开发中常用的设计模式
  4. 分布式服务框架 Zookeeper(转)
  5. Wall(凸包POJ 1113)
  6. UI3_UILabel
  7. POJ2104 k-th number 划分树
  8. Delphi判断字符串是否是数字、字母、大小写字母
  9. python运维开发之第二天
  10. hdu 4059 The Boss on Mars 容斥
  11. [zencart教程]zencart外贸建站仿站交流俱乐部
  12. 自定义控件学习之canvas和paint相关知识点学习
  13. matlab 逻辑数组及其应用
  14. Opencv2.4.13 与Visual Studio2013 环境搭建配置
  15. 数据库DDL操作
  16. DDoS攻击与防御(4)
  17. mysql 将行拼接成字符串的方法
  18. 喵哈哈村的魔法考试 Round #18 (Div.2) 题解
  19. 高程三 DOM对象
  20. 阿里大于发送短信(java)

热门文章

  1. 学习Find函数和select
  2. Sort Characters By Frequency
  3. Objective C中数组排序几种情况的总结
  4. asp.net C#获取程序文件相关信息
  5. hdu 2074
  6. C语言实现栈
  7. jQuery的使用
  8. linux /boot 清理
  9. BackTrack5-r3汉化
  10. NSFileManager计算文件/文件夹大小