如何從/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