受到这个问题的启发
如何强制GDB反汇编? https://stackoverflow.com/questions/1237489/how-can-i-force-gdb-to-disassemble
和这个相关的
什么是 INT 21 小时? https://stackoverflow.com/questions/1245809/what-is-int-21h
Linux下系统调用实际上是如何发生的?执行调用时会发生什么,直到调用实际的内核例程?
假设我们谈论的是 x86:
- The 系统调用ID http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html存入EAX寄存器
- 系统调用所需的任何参数都存入由系统调用指定的位置 http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html。例如,某些系统调用期望其参数驻留在 EBX 寄存器中。其他人可能希望他们的论点位于堆栈的顶部。
- An
INT 0x80
中断被调用。
- Linux 内核为 EAX 寄存器中的 ID 标识的系统调用提供服务,并将任何结果存放在预先确定的位置。
- 调用代码使用任何结果。
可能我已经有些生疏了,已经过去几年了……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)