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語言轉匯編的時候,加強一下匯編的知識,知識到用時方恨少,還是多准備一些知識了:)加油~~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM