存档

2010年9月 的存档

抓虫日记之 kgdb 与 removed breakpoint

2010年9月21日 没有评论

kgdb_skipexception()函数的引入是为了避免kgdb踩中已经删除的断点而做的特殊处理.
所有删除的断点,必须标记为BP_REMOVED, 否则就会出现kgdb踩中已经删除的断点这情况.

Playing with ptrace, Part II — 玩转ptrace(二)

2010年9月7日 1 条评论

在这篇文章中,我们将要研究如何在子进程中设置断点和往运行中的程序里插入代码。实际上调试器就是用这种方法来设置断点和执行调试句柄。与前面一样,这里的所有代码都是针对i386平台的。

分类: debugger theory, gdb 标签: ,

Playing with ptrace, Part I — 玩转ptrace(一)

2010年9月7日 没有评论

你想过怎么实现对系统调用的拦截吗?你尝试过通过改变系统调用的参数来愚弄你的系统kernel吗?你想过调试器是如何使运行中的进程暂停并且控制它吗?
你可能会开始考虑怎么使用复杂的kernel编程来达到目的,那么,你错了。实际上Linux提供了一种优雅的机制来完成这些:ptrace系统函数。 ptrace提供了一种使父进程得以监视和控制其它进程的方式,它还能够改变子进程中的寄存器和内核映像,因而可以实现断点调试和系统调用的跟踪。
使用ptrace,你可以在用户层拦截和修改系统调用(sys call)
在这篇文章中,我们将学习如何拦截一个系统调用,然后修改它的参数。在本文的第二部分我们将学习更先进的技术:设置断点,插入代码到一个正在运行的程序中;我们将潜入到机器内部,偷窥和纂改进程的寄存器和数据段。

分类: debugger theory, gdb 标签: ,