eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› FLIRT + FLAIR = ?
Посл.ответ Сообщение

Ранг: 169.0 (ветеран)
Статус: Участник

Создано: 1 сентября 2015 18:55 · Поправил: 1 сентября 2015 18:56 Apokrif New!
Цитата · Личное сообщение · #1

Народ, подскажите как правильно и быстро флиртовать?
Расклад:
statically linked .so для Andriod.
Компилер: GCC: (GNU) 4.4.3
Неизвестно: android-ndk (т.е. набор либ)
gcc 4.4.3 был во многих android-ndk.
В каждом android-ndk в среднем примерно дюжина android platform (android-3…android-*)
Считаем, что стандартные либы использованы из android-ndk (т.е. не перекомпилились)
Также интересует нестандартные либы (т.н. не входящая в android-ndk) OpenSSL и Lua.

Генерить FLIRT Signature Files подбирая ключи компиляции, потом применять к огромному idb вроде как-то неправильно.

Посмотрел IDA.Pro.Book.2nd.Edition, там только общие советы по этому вопросу...

Пока думаю так:
Для стандартные либ:
в исходном "statically linked" .so попытаться точно вычислить какую-то функцию из стандартных либ и поискать её в разных комбинациях android-ndk/platform. Кажется, что все равно подойдут почти все ndk...

Для нестандартных либ:
Так же попытаться точно вычислить какую-то функцию и поискать её в разных комбинациях ключей компиляции.

Есть какие-то другие (более правильные?) подходы?

Ранг: 556.7 (!)
Статус: Модератор

Создано: 1 сентября 2015 19:34 New!
Цитата · Личное сообщение · #2

idb2pat не подойдет?

Ранг: 169.0 (ветеран)
Статус: Участник

Создано: 1 сентября 2015 20:05 New!
Цитата · Личное сообщение · #3

r_e пишет:
idb2pat не подойдет

Каким макаром?
У меня же ничего (из того что мне нужно) не найдено в idb...
Я так понимаю, если уже есть предыдущая, "опознанная" версия бинарника и известно, что новая скомпилена тем же компилером (или близким) с теми же либами (или близкими), то idb2pat это как за то, что нужно.
Я не прав?

Ранг: 556.7 (!)
Статус: Модератор

Создано: 1 сентября 2015 21:57 New!
Цитата · Личное сообщение · #4

Apokrif
а чо, в андроид ндк либы в сырцах идут? сгенерь с них сигнатуры.
а тех, которых нет, типа openssl и т.д. сгенерь со стандартным набором ключей. что-нибудь, да распознается.

А что такое вообще statically linked .so? там же импорты должны торчать именованные.
Или имеется в виду statically linked .a?

Ранг: 169.0 (ветеран)
Статус: Участник

Создано: 2 сентября 2015 02:09 · Поправил: 2 сентября 2015 02:29 Apokrif New!
Цитата · Личное сообщение · #5

r_e пишет:
а чо, в андроид ндк либы в сырцах идут?

Да, всегда можно пересобрать с другими ключами. (Никогда не делал!)
Весь стандартный андроид можно собрать с 0, все сырцы есть.

r_e пишет:
А что такое вообще statically linked .so? там же импорты должны торчать именованные.
Или имеется в виду statically linked .a?

Правильный термин "Statically linked binaries".
Т.е. "statically linked .so" это .so, который не использует libc.so, а "statically linked libc.a"
Многие либы линкуем на выбор, shared/static:
772,856 libstlport_shared.so
1,177,156 libstlport_static.a

r_e пишет:
а тех, которых нет, типа openssl и т.д. сгенерь со стандартным набором ключей. что-нибудь, да распознается.

Да понятно, просто думал, может кто-то уже разбирался и подскажет, где грабли спрятаны…

Добавлено спустя 20 минут
Еще один детсадовский вопрос к флиртущим:
По определению: Signature это pattern + a list of symbol names referenced by the function (и еще кое-то)

Пример, есть функции a(), b() и c().
b() и c() используют a().
Signature сняты.

Чуток меняем a() в начале, чтобы pattern стал другой.
Компилим и применяем старые Signature
Что получится?
А. Т.к. a() по pattern не нашелся, то b() и c() тоже не найдутся из-за отсутствия ссылки на a()
Б. Или a() все равно найдется, т.к. b() и c() его используют и их pattern не изменились?

И можно ли как-то управлять флиртом, чтобы изменить поведение?


Ранг: 988.8 (! ! !)
Статус: Участник

Создано: 2 сентября 2015 04:07 New!
Цитата · Личное сообщение · #6

у флирта есть процент попадания, там ключики в командной строке иды какие то задаются и она показывает,
кто то уже на форуме это искал находил и был рад, поищите

Ранг: 169.0 (ветеран)
Статус: Участник

Создано: 2 сентября 2015 16:09 New!
Цитата · Личное сообщение · #7

reversecode пишет:
у флирта есть процент попадания, там ключики в командной строке иды какие то задаются и она показывает

Этот:
-z debug:
00000004 flirt

Ранг: 169.0 (ветеран)
Статус: Участник

Создано: 5 сентября 2015 22:27 · Поправил: 5 сентября 2015 22:28 Apokrif New!
Цитата · Личное сообщение · #8

Попробовал сигнатуры для своей либы получить (очень простая, всего 3 функции)
pcf.exe из flair66 и flair68 сказал:
Code:
  1. lib.lib: invalid module at offset 630. Skipping.
  2. lib.lib: invalid module at offset 15560. Skipping.
  3. lib.lib: skipped 2, total 2
Попробовал стандартную либу msvcmrt.lib из Visual Studio 11.0 и Visual Studio 12.0 – та же история.
pcf пропустил 285 модулей из 315...
Это я туплю или pcf из flair66 и flair68 реально не поддерживает даже более менее старые Visual Studio?
В flair examples есть Turbo C v2.00 (1989) и BCC++ v3.1 (1992)
И еще delphi1 .. 7.00

В IDA 6.6\sig есть vc7atl.sig и vc8atl.sig
Если это сигнатуры для VisualС 7 и 8, то это примерно годы 2002 - 2005
А для более новых VС сигнатуры даже для стандартных либ не поставляются?
И сгенерить их с помощью pcf тоже нельзя...
Или я конкретно не догоняю?

Могу пару стандартных либ выложить из Visual Studio 12.0, если кто сам хочет попробовать!
 eXeL@B —› Основной форум —› FLIRT + FLAIR = ?

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS