如果用户应用程序进行系统调用,则会触发软件中断/异常。如何查看生成软件中断的源代码?
发布于 2012-10-09 03:18:42
发布于 2012-10-08 16:33:47
很久很久以前,有一个进入内核的int 0x80陷阱,但现在sysenter是首选的。
你可以通过转储由内核自动映射到每个进程的vsyscall部分来获得代码。
$ cat /proc/self/maps
blah blah blah
...
blah blah blah
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]有关更多信息,请查看this article
发布于 2012-10-08 15:21:23
可以使用英特尔x86汇编指令int n触发软件中断,其中n是中断号。系统调用是软件中断的一种特殊情况;在中,您可以通过以下方式手动执行系统调用
mov eax, m
int 0x80其中m应替换为中断号。以下是链接到每个函数的在线手册页的32-bit syscall numbers和64-bit syscall numbers列表。您还需要通过其他寄存器(ebx、ecx等)将参数传递给syscall,您可以阅读有关该here的更多信息。
这是执行syscall的最通用方法,因为它独立于外部库,如libc,如果需要,可以使用内联汇编在C/C++中实现。
https://stackoverflow.com/questions/12776340
复制相似问题