首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux syscall uname for x86

linux syscall uname for x86
EN

Stack Overflow用户
提问于 2021-02-07 19:22:06
回答 1查看 133关注 0票数 1

我只学习汇编语言(nasm),有更多的问题。例如,我想编写asm代码来获取有关操作系统的信息。我使用Linux86bit。在代码中,我使用syscall uname。在浏览器中有关于这个系统调用和代码的更多信息。我找到了这个链接:

https://github.com/hc0d3r/asm/blob/master/uname.asm

Uname syscall in buffer overflow

但我使用的是86位系统。因此,我尝试为我的系统重写代码。我知道,在寄存器eax中,我应该移动syscall的值(0x7a或122)和数组的寄存器ebx地址。

我以第一个链接为例,但得到了错误。那么,你能帮我决定这个问题吗?

这是我的主要代码:

代码语言:javascript
复制
extern printf

SYS_WRITE equ 4
SYS_UNAME equ 122
SYS_EXIT equ 60
STDOUT equ 1

section .data
str: db '%s',10,0
UTSNAME_SIZE equ 65
space db ' '
break_line db 0xa

section .bss
uname_res resb UTSNAME_SIZE*5

section .text
global main
main:
    mov eax, 0x7A
    mov ebx, uname_res
    int 80h


push dword [uname_res]
    push dword str
    call printf

mov eax, 1
int 80h

我得到了这个错误:

代码语言:javascript
复制
segmentation error (memory dump made)

printf上的这个错误。对不起,我的英语不好。

EN

回答 1

Stack Overflow用户

发布于 2021-02-24 13:16:15

我为linux x86编写了代码。请看这里(也许会有用)

https://github.com/OlegInfoSecurity/uname_x86

此错误发生在我输出(打印)信息时。我更改了输出信息的代码,程序是工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66087308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档