zoukankan      html  css  js  c++  java
  • linux下使用汇编语言编写hello world!程序

    最近公司需要完成安全方面的测试,随之带来需要更深入地学习攻击方法和漏洞分析的技术,总感觉有点像黑客:),不过不能只知道一些安全测试工具的方法和工具的使用,更需要基础功夫,首先从大学学过的汇编语言(呵呵,大学学过的课程,长时间没有使用大部分还给老师了)开始。

    1、下载nasm安装包

    #wget http://www.nasm.us/pub/nasm/releasebuilds/2.11.08/nasm-2.11.08.tar.gz

    2、解压安装nasm

    #tar -xzvf nasm-2.11.08.tar.gz

    #cd nasm-2.11.08

    #./configure

    #make

    #make install

    3、编写hello.asm

    section .data                           ;section declaration
    msg     db      "Hello, world!",0xA     ;our dear string
    len     equ     $ - msg                 ;length of our dear string
    section .text                           ;section declaration
                           ;we must export the entry point to the ELF linker or
       global _start       ;loader. They conventionally recognize _start as their
                           ;entry point. Use ld -e foo to override the default.
    _start:
    ;write our string to stdout
           mov     eax,4   ;system call number (sys_write)
           mov     ebx,1   ;first argument: file handle (stdout)
           mov     ecx,msg ;second argument: pointer to message to write
           mov     edx,len ;third argument: message length
           int     0x80    ;call kernel
    ;and exit
           mov     eax,1   ;system call number (sys_exit)
           xor     ebx,ebx ;first syscall argument: exit code
           int     0x80    ;call kernel 

    4、编译连接

    #nasm -f elf64 hello.asm (linux是64位的,如果是32,请使用elf32)

    #ld -s -o hello hello.o

    #ls hello

    hello

    5、执行程序

    #./hello

    Hello, world!

    终于写一个最简单的Hello World,回想起一些常用的指令和寄存器的作用,只能在后来安全测试和C语言转汇编的时候,加强一下汇编的知识,知识到用时方恨少,还是多准备一些知识了:)加油~~~~

  • 相关阅读:
    KMP字符串查找
    基数排序
    二分查找来查找旋转数组
    通过前序(后序)+中序创建树
    二维数组找最大值
    用字符串的空格替换其他字符
    桶排序
    字符串的排列
    和为S的两个数字
    整数中1出现的次数(从1到n整数中1出现的次数)
  • 原文地址:https://www.cnblogs.com/jinyz/p/4456270.html
Copyright © 2011-2022 走看看