佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1105|回复: 2

请问这里有谁在学Linux编程?

[复制链接]
发表于 27-7-2021 04:18 PM | 显示全部楼层 |阅读模式
本帖最后由 褐眼睛 于 27-7-2021 04:22 PM 编辑

学Linux编程的人免不了知道:

  1. int 0x80
复制代码
又或者:

  1. mov eax, 1
  2. syscall
复制代码
最近我个人开始学习Linux x64编程,发现它的ELF64可执行文件大小比同类的Windows PE可执行文件大小还要少2KB左右。

大家可以分享一下?不论你是用汇编还是其他程序语言的。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-7-2021 04:27 PM | 显示全部楼层
本帖最后由 褐眼睛 于 27-7-2021 04:30 PM 编辑

以下这个本来是写给Windows的,后来把它转换去Linux x64:
Screenshot from 2021-07-27 16-25-00.png
大家如果感兴趣,可以自行下载Flat Assembler for Linux,然后复制以下代码来编译试一试:

  1. format ELF64 executable 3

  2. segment readable executable

  3. entry $

  4.         mov     eax, 0x80000002
  5.         cpuid
  6.         mov     dword [cpu], eax
  7.         mov     dword [cpu + 4], ebx
  8.         mov     dword [cpu + 8], ecx
  9.         mov     dword [cpu + 12], edx
  10.         mov     eax, 0x80000003
  11.         cpuid
  12.         mov     dword [cpu + 16], eax
  13.         mov     dword [cpu + 20], ebx
  14.         mov     dword [cpu + 24], ecx
  15.         mov     dword [cpu + 28], edx
  16.         mov     eax, 0x80000004
  17.         cpuid
  18.         mov     dword [cpu + 32], eax
  19.         mov     dword [cpu + 36], ebx
  20.         mov     dword [cpu + 40], ecx
  21.         mov     dword [cpu + 44], edx
  22.         mov        byte [cpu + 48],0xA        ;Append line feed

  23.         mov        edx,49
  24.         lea        rsi,[cpu]
  25.         mov        edi,1                ; STDOUT
  26.         mov        eax,1                ; sys_write
  27.         syscall

  28.         xor        edi,edi         ; exit code 0
  29.         mov        eax,60                ; sys_exit
  30.         syscall

  31. segment readable writeable

  32. cpu rb 49
复制代码


CPU名称只有48字节,这个小程序就是将BIOS预设好的CPU名称显示在终端窗口里。


Screenshot from 2021-07-27 16-25-00.png
回复

使用道具 举报

 楼主| 发表于 28-7-2021 04:31 PM | 显示全部楼层
最近由于研究ELF64文件格式,而反编译了一个Linux x64程序.

这个原理便被用在我的自创编译器里面。
rw.png


rw.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 2-12-2024 11:57 AM , Processed in 0.099952 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表