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

0x00linux32位汇编初入--前期准备的更多相关文章

  1. GDB调试32位汇编堆栈分析

    GDB调试32位汇编堆栈分析 测试源代码 #include <stdio.h> int g(int x){ return x+5; } int f(int x){ return g(x)+ ...

  2. 初入职场的建议--摘自GameRes

    又开始一年一度的校招了,最近跑了几个学校演讲,发现很多话用短短的一堂职业规划课讲还远远不够,因为那堂课仅仅可能帮大家多思考怎样找到一份合适的工作,并没有提醒大家怎样在工作中发展自己的职业. 见过这么多 ...

  3. 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析

    20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...

  4. 【Xbox one S】开箱&开机&初入坑心得

    再来一发水贴,先上产品标准照镇贴: 前言 身为一个资深单机游戏玩家,常年混迹在PC平台,但内心深处一直对主机有种迷之向往,感觉那才是单机游戏的正处之地,坐沙发上拿着手柄对着电视跌宕起伏才是正确的游戏姿 ...

  5. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  6. 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式

    32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...

  7. 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

    32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...

  8. 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

    32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...

  9. win7win8 64位汇编开发环境合集安装与设置

    win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8  64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...

随机推荐

  1. iOS进阶之多线程

    多线程 注意:iOS关于UI的刷新和添加必须在主线程中操作! pthread的创建方法: pthread_t pthread; //第一个参数 线程指针 //第二个参数 线程的一些属性 //第三个参数 ...

  2. OpenSSL 使用拾遗(一)---- 生成 pkcs12 文件

    从本期开始,记录一些在使用 OpenSSL 过程中碰到的问题及解决办法 在 Linux 下需要生成 pkcs12 文件,立即想到 OpenSSL.键入如下命令 ~ # openssl pkcs12 - ...

  3. JRE JDK JVM是什么

    jre: Java Runtime Environment java运行环境 ----------------------------------------- jdk:Java Developmen ...

  4. php实现函数重载

    java..net等强类型预言中都有方法重载,但是PHP是弱类型语言,不能确定参数的类型, 而且如果php定义的方法接收一个参数,调用的时候传入多个也不会有问题,所以不能进行重载. 但是我们可以通过p ...

  5. 使用easeui dialog弹出框中使用CKeditor多次加载后无法编辑问题

    问题呈现:弹出框页面 <tr class="addtr"> <th>内容</th> <td> <!-- <textare ...

  6. PHPSTORM模板变量注释

    类似于这种注释,方便使用. 有两种方式一种是生成PHP文件时,自动生成,一种是手动生成. 第一种:自动生成 一图解释所有.这么配置就OK了. 这种方法还有一种就是,在包括里边编写,直接引用,先写PHP ...

  7. JAVAWEB学习总结 SERVLET开发(二)

    一.ServletConfig对象 1.1.配置servlet初始化参数 在servlet的配置文件中web.xml中,可以使用一个或多个<init-param>标签为servlet配置一 ...

  8. POJ 1274 裸二分图匹配

    题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #includ ...

  9. mac中使用brew安装软件,下载太慢怎么办?

    mac中使用brew安装软件,下载太慢怎么办? 本文所说的软件是指较大的软件,如果软件较小,例如软件只有几M,那么使用此方法后,提升会非常小. 了解brew原理: 1: 从网络下载安装包 2: 执行一 ...

  10. 1、MVC和EF中的 Model First 和 Code First

    准备:先引入MVC和EF的dll包 *命令方法:打开工具——库程序包管理器——程序包管理器控制台,选择自己的项目 a)     Install-Package EntityFramework -Ver ...