классический спинлук
Неожиданные выходы из функции (они же преждевременные) происходят всякий раз, когда из-за какой-то ошибки функция уже не может (не хочет) продолжить работу делает немедленный return. Часть работы к этому моменту уже выполнена, а часть еще нет. Если программист допустит даже крошечную неаккуратность, структуры данных превратятся в кашу. Одна из таких ошибок содержится в функции create_elf_tables, описанной в прошлой статье.
Для поиска внеплановых выходов достаточно перейти в конец функции и проанализировать перекрестные ссылки, которые ведут наверх. Чем их больше, тем выше вероятность, что здесь окажется что-то не так. Ну а там и до дыры уже недалеко.
kernel:C010A810 loc_C010A810: ; CODE XREF: kernel:C010A7F1^j
kernel:C010A810 mov eax, 0FFFFFFEAh
kernel:C010A815
kernel:C010A815 loc_C010A815: ; CODE XREF: kernel:C010A7CF^j
kernel:C010A815 ; kernel:C010A809^j
kernel:C010A815 pop ebx
kernel:C010A816 pop esi
kernel:C010A817 pop edi
kernel:C010A818 pop ebp
kernel:C010A819 pop ecx
kernel:C010A81A retn