Мне нужно найти точку входа в файл elf, работающий в виртуальной среде (debian x86). На хост-машине я могу определить текущий указатель команд и все остальные регистры процессора. Таким образом, можно определить вызовы функций ядра.
Функция load_elf_binary вызывает функцию start_thread со следующими параметрами:
start_thread (regs, elf_entry, bprm-> p);
Так что я должен иметь возможность получать elf_entry из регистров процессора, но когда я сбрасываю регистры, я получаю такой вывод:
EAX=0xc61bffb4
EBX=0xc61bffb4
ECX=0xbff29430
EDX=0xb78ae850
ESI=0xc78f9500
EDI=0xbff29fec
EBP=0xbff29488
ESP=0xc61bfeb4
EIP=0xc1001f82
CR2=0xb78ca840
Ни один регистр не имеет значения, начинающегося с 0x8xxxxxxx, поэтому я не уверен, что сделал ошибку или elf_entry не является точкой входа, которую я ищу.
Основной вопрос: является ли переменная elf_entry в функции ядра load_elf_binary точкой входа, которую я получаю с помощью readelf -h?