zoukankan      html  css  js  c++  java
  • 汇编: 在Linux系统中调用C函数

    汇编调用C库函数

    • Code

          ;; 可执行文件名: helloworld.asm
          ;; 程序版本: 0.01
          ;; 创建日期: 2019/1/02
          ;; 最后修改日期: 2019/1/02
          ;; 作者: ieeqc
          ;; 描述:
          ;; - 汇编调用c函数实现helloworld程序
          ;; 
          ;; 编译指令
          ;; - nasm -f elf -g -F stabs puts_hello.asm -o puts_hello.o
          ;; - gcc -m32 puts_hello.o -o hello
      
          
          SECTION .data               ; 包含已初始化数据段
      EatMsg:  db "Hello World!", 0
          SECTION .bss                ; 包含未初始化数据段
          SECTION .text               ; 包含代码段
      
          extern puts                 ; 说明来自glibc的puts函数
          global main
      
      main:
          push ebp                    ; 为调试器建立堆栈帧
          mov ebp, esp
          push ebx                    ; 保存现场
          push esi
          push edi
          push EatMsg                 ; 压入函数参数输出信息地址到栈中
          call puts                   ; 调用puts()函数
      
          add esp, 4                  ; 清理堆栈, 通过ESP 调用4字节
      
          pop edi                     ; 恢复现场
          pop esi
          pop ebx
          mov esp, ebp                ; 在返回之前,销毁堆栈
          pop ebp
          ret                         ; 返回
      
      

    编译汇编代码

    • bash:

      nasm -f elf -g -F stabs puts_hello.asm -o puts_hello.o
      
      gcc -m32 puts_hello.o -o hello
      
  • 相关阅读:
    15、编写ORM
    14、细说协程
    COOKIE欺骗
    聪明的小羊
    re.S函数 python3
    截断上传
    sql百态01-post
    Why not?
    随机字符的本地爆破
    HTTP协议-请求头,响应头
  • 原文地址:https://www.cnblogs.com/ieeqc/p/14532481.html
Copyright © 2011-2022 走看看