GrabDuck

Сборка ядра Android 4.4.x (KitKat) / 5.x.x(Lollipop) / 6.x.x (Marshmallow) для ...

:

Кто-нибудь встречал такой LCM?


Вам сюда
(Смотрите в сорцах Elephone P7000 - lk.bin )
Тему читать надо

Дизассемблирование ядра 64-бит (аналогично и для 32-бит)
Поможет тем, у кого нет исходников (драйверов)

1) Достаем kallsyms c тела (нужен рут и права суперпользователя)
Чтобы не было ошибки "Unknown username or uid" делаем так:

su
sh -c "echo 0 > /proc/sys/kernel/kptr_restrict"
cat /proc/kallsyms >/sdcard/kallsyms.txt

2) Из boot.img достаем ядро утилитками - найдете в соответствующей теме
( CarlivImageKitchen-Windows_v1.0.zip (ядро 6Мб, смещение 0x200)
MTwinTools_v0.6.1_winxp.rar (ядро 6Мб ) )
Пользуйтесь этим:
AndImgTool_1_3_0.rar (отрабатывает лучше всего - ядро kernel.img 10-14Мб)
AndImgTools

3) Загружаем ядро в IDA64 по адресу 0xFFFFFFC000080000
(в IDA для 32-бит 0xC0008000)

4) Выбираем в опциях процессор arm8 little endian,
выставляем битность сегмента в меню :
Edit -> Segments -> Edit segment... , Там передвинуть галочку с 32 на 64.
(для 32-бит не нужно)

5) Запускаем скрипт Alt+F7
kallsyms_loader.idc
Отредактируйте скрипт:
закомментируйте (уже есть в IDA)

static trim(str) {
return rtrim( ltrim(str) );
}


Вместо MakeCode(def_addr); надо if (def_type == 'T' || def_type == 't') MakeCode(def_addr);
(LazyC0DEr : одна особенность, которая может чуток попортить жизнь)
Чтобы не портить себе жизнь - предварительно выделите все текстовые строки - A
или позже поторно запустите скрипт для переименования.
Укажите на слитый kallsyms.txt

В итоге имеем все имена в дизассемлированном коде, с которым можно разбираться.
Для декомпиляции нужна IDA 6.9 + hexrays 2.3 arm64
(кто найдет -шепните в кумыс)
Можно использовать Plugin - Snowman decompiler v1.0 (бывший SmartDec)
prebuilt packages
repository
Для декомпиляции функции под курсором используйте F3, Ctrl-F3 всей программы.
См. Edit/Plugins меню для большей информации.

Читайте, лень повторяться
здесь

IDA Scripts

Литература:
А.А.Оголюк Защита приложений от модификации. Раздел2. ОСНОВЫ ИСПОЛЬЗОВАНИЯ IDA
Reverse Engineering для начинающих
The.IDA.Pro.Book.2nd.Edition.Jun.2011.pdf
и другие.

Краткий справочник горячих клавиш IDA :

Space переключать между листингом и просмотром кода в виде графа
C конвертировать в код
D конвертировать в данные
A конвертировать в строку
* конвертировать в массив
U сделать неопределенным
O сделать смещение из операнда
H сделать десятичное число
R сделать символ
B сделать двоичное число
Q сделать шестнадцатеричное число
N переименовать идентификатор
? калькулятор
G переход на адрес
: добавить комментарий
Ctrl-X показать ссылки на текущую функцию, метку, переменную (в т.ч., в стеке)
X показать ссылки на функцию, метку, переменную,и т.д.
Alt-I искать константу
Ctrl-I искать следующее вхождение константы
Alt-B искать последовательность байт
Ctrl-B искать следующее вхождение последовательности байт
Alt-T искать текст (включая инструкции, и т.д.)
Ctrl-T искать следующее вхождение текста
Alt-P редактировать текущую функцию
Enter перейти к функции, переменной, и т.д.
Esc вернуться назад
Num - свернуть функцию или отмеченную область
Num + снова показать функцию или область

Сообщение отредактировал croc2008 - 19.09.16, 14:10

Причина редактирования: инструкции kallsyms, линк AndImgTool