如何从/proc/kcore
中检索系统调用地址。我可以从System.map
文件中获得系统调用表地址。从/ proc/kcore获取系统调用表中的系统调用地址
4
A
回答
9
如果您使用的是基于x86的机器,则可以使用sidt
指令来获取中断描述符表寄存器以及中断描述符表本身。有了这个功能,您可以获得0x80系统调用中断调用的system_call
(或与x86-64兼容的ia32等价物)函数的地址。拆解该中断处理程序并扫描特定的间接调用指令,可以提取调用指令中的地址。该地址是您的系统调用表(在x86上)或x86-64上的IA32兼容性系统调用表。
获取x86-64本地系统调用表是类似的:不要用sidt
重建中断表,请阅读处理器的IA32_LSTAR MSR。 (high << 32 | low)
的地址是系统调用调度程序。像以前一样扫描内存,从调用指令中提取地址,但请记住掩盖地址的高32位。
这可以掩盖很多的更多技术信息(比如要搜索哪些字节),您应该先理解内核代码。在Google快速搜索后,我发现整个过程都有文档记录(例如模块代码)here。
祝你好运,并尽量不要自责!
+0
不幸的是,链接已经死了:( – galaxy 2015-07-17 13:27:10
相关问题
- 1. 系统(“”)调用
- 2. 获取Java中的系统MAC地址
- 3. FreeBSD从另一个系统调用发出系统调用
- 4. 读取系统调用
- 5. UNIX系统调用列表?
- 6. Vfork系统调用
- 7. 如何获取系统的IP地址
- 8. sigaction系统调用
- 9. Pipe()系统调用
- 10. python系统调用
- 11. fork系统调用
- 12. sys_execve系统调用
- 13. MIPS:系统调用
- 14. Ptracing系统调用
- 15. 调用C“系统” ++
- 16. 系统调用write
- 17. indir系统调用
- 18. 管系统调用
- 19. 中断系统调用
- 20. /系统调用表中的ptregs
- 21. linux系统中使用的for_each_zone在新系统调用中调用
- 22. 从FUSE调试系统调用
- 23. 系统调用在C++中
- 24. posix_memalign中断系统调用
- 25. 使用read()系统调用
- 26. 系统调用的参数
- 27. 获取最后一次调用的系统调用
- 28. 系统()调用用C
- 29. 使用系统调用
- 30. 与c的系统调用
是的。不使用系统地图 – user567879 2011-04-27 15:57:22