Я хочу перехватить функцию load_elf_binary
в файле fs/binfmt_elf.c
, прочитать несколько пользовательских заголовков разделов из файла, переданного ему через аргумент, и установить несколько регистров (eax, ebx, ecx, edx) перед возвратом из функции.Kprobe/Jprobe в середине функции
Теперь я прочитал, что Jprobes - это хороший способ получить доступ к аргументам целевой функции, но проблема в том, что после того, как элемент управления возвращается из функции Jprobes, значения регистра и стека восстанавливаются в соответствии с его спецификациями, поэтому я просматриваю способ вокруг него и, вероятно, вставка зонда в середине функции (предпочтительно к концу) была бы хорошей идеей. Пожалуйста, поправьте меня, если я ошибаюсь и помогу в этом.
Почему вы пытаетесь сменить регистр здесь? – bdonlan
Я не буду говорить, изменение именно, мне нужно выполнить следующий фрагмент кода '__asm__ __volatile__ (» .byte 0xF1" \t \t \t \t \t \t \t: \t \t \t \t \t \t \t: "а" (е), «b» (ebx), «c» (ecx), «d» (edx), «D» (edi), «S» (esi)), 'чтобы CPU знал, что некоторые файлы ELF должны следует рассматривать как специальные файлы для функции безопасности, над которой я работаю. – bawejakunal
Насколько я могу судить, изменение регистров по возвращению просто изменит возвращаемое значение функции.который будет служить только для того, чтобы помещать вещи на путь ошибки (или не помещать вещи в путь ошибки, когда он должен быть на пути ошибки). Трудно сказать, что нужно делать, учитывая, что вы обманули на самом деле довольно запутанный и хрупкий метод, чтобы делать то, что вы делаете. Почему бы вам не сказать нам, что вы на самом деле пытаетесь сделать, мы можем предложить более простой способ? – bdonlan