R0 CREW

Реверс функции из модуля ядра и исследование формата данных в буфере

Есть одна задача, к которой надо как-то подступиться.
Имеются некоторые данные в nand-флеше, в назначении полей которых надо разобраться. И есть модуль ядра supplies.ko с очень интересной функций, в которую передается буфер с этими данными. В этой функции 1700 строк и множество case’ов.

Модуль supplies.ko динамически подгружается к линуксовому ядру версии точно 3.0.0.

Нужно выяснить, откуда передаются параметры в эту интересную функцию. Для этого мы решили попытаться проэмулировать код, поставить на функцию бряк и по стэку вызовов определить, откуда берутся параметры.

Кроме модуля supplies.ko имеется еще несколько модулей.

Как можно подступиться к этой задаче?

Можно использовать ftrace/krpobes или захукать напрямую. Если это syscall, то еще легче - sysdig/strace или через модуль, пример для sys_open: http://tldp.org/LDP/lkmpg/2.6/html/x978.html

Qemu for linux kernel debugging

Попробуйте так.