Мне нужен адрес этой таблицы, чтобы перехватить обработчик для 0x80 int.
Стоп. Что вы действительно пытаетесь сделать? Взлом обработчика прерываний - не ваша цель, это один шаг, который, как вы думаете, нужно сделать, чтобы чего-то достичь. Что бы это ни было, вы, вероятно, ошиблись.
Чтобы перехватить прерывания, вам нужно изменить таблицу дескрипторов прерываний . Я предлагаю вам взглянуть на справочные руководства Intel , чтобы выяснить, как это сделать. Это будет болезненное программирование. Но я подозреваю, что вы больше заинтересованы в системных вызовах. Кроме того, в современных системах Linux инструкция int 0x80
не является обычным способом вызова системного вызова. Это, конечно, все еще работает для обратной совместимости, но вы увидите другие инструкции, такие как sysenter
(x86) или syscall
(x86_64). Поэтому, если вы действительно заинтересованы в том, чтобы что-то делать с системными вызовами, не делайте этого в обработчике прерываний.
В любом случае, создайте новый вопрос, который просит совета по достижению вашей конечной цели, и сообщество здесь поможет вам в этом. Если у вас есть вопросы по конкретным частям, задайте больше вопросов и вернитесь к высокому уровню в этих новых вопросах.
(Кстати, если вам нужно подтверждение адреса, попробуйте запустить info addr sys_call_table
в GDB. Или, поскольку похоже, что вы используете архитектуру x86_64, попробуйте p &sys_call_table
.)