GDB 可以在没有 su 权限的情况下附加到任何进程的事实对我来说是可怕的。例如,是什么阻止我编写恶意软件/病毒(/无论正确的术语是什么),它使用与 GDB 相同的系统调用来附加到任何进程、发送中断、动态更改指令、向分支指令添加断点以更改 ZF等等。?
有了这个能力,你显然可以做很多有害的事情。例如,我正在使用一些 GDB Python 脚本进行一些小技巧,但我看不出是什么阻止了我编写一些非常危险/恶意的东西。
所以我有一些与这如何可能以及这如何安全相关的问题:
(我假设是操作系统允许进程以某种方式向其他进程发送中断,并访问它的地址空间并更改内存。如果我错了,请纠正我)
1)是什么让这个安全?是什么阻止我编写一个程序来改变系统中运行的每个进程的行为?
2) 涉及哪些系统调用?操作系统如何让我访问其他进程的地址空间,同时不从我这里获取我自己的地址空间。(例如 GDB 有它自己的地址空间,但它也可以读取附加进程的地址空间)
3)在我的用户级程序中,是否可以检测到这种“附加”?比如,如果另一个进程附加到我的程序,我可以打印一条消息并终止吗?我如何检测到这一点?
(我使用“附加”作为“开始写入/读取我的地址空间”)
谢谢。