gpt4 book ai didi

Linux x86_64 threading/sys_clone() 汇编实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:12 25 4
gpt4 key购买 nike

来自 clone(2) 联机帮助页

http://man7.org/linux/man-pages/man2/clone.2.html

       long clone(unsigned long flags, void *child_stack,
void *ptid, void *ctid,
struct pt_regs *regs);

您如何使用裸系统调用(不是 libc)指定函数以及如何在汇编中设置“struct pt_regs *regs”并不明显(...您是否以某种方式将 IP 作为寄存器包含在堆栈中寄存器 [如何安排?] 由“*regs”指向,从而指定调用地址?)

我已经搜索过任何相关示例。任何人都可以指出示例或澄清吗?

最佳答案

它并不明显,除非您知道在哪里看。这是针对 32 位系统调用的:

eax = 120 (syscall number for sys_clone)
ebx = unsigned long flags
ecx = void *child_stack
edx = void *ptid
esi = void *ctid
edi = struct pt_regs *regs

然后是一个int 80H

http://syscalls.kernelgrok.com/并搜索 clone

对于 64 位系统调用: http://blog.rchapman.org/post/36801038863/linux-system-call-table-for-x86-64

再看http://lxr.free-electrons.com/source/arch/x86/include/asm/ptrace.h对于pt_regs结构体的定义

除此之外,只需阅读 clone 的手册页,并列出参数的信息。

关于Linux x86_64 threading/sys_clone() 汇编实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26812977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com