Перейти к содержанию
Old Phone Forum
  • Вход

    Вы сейчас не залогинены на форуме.

    Для возможности комментариев, загрузки файлов, подписок на ответы - вам надо войти.

раз Ida... два Ida?!


Рекомендуемые сообщения

Дело было вечером, делать было есть чего =) Короче... часто получается так, что... есть прошивка в телефоне... и есть другая прошивка на сайте, да ещё с sym или map-файлами или может кто-то патчей понаделал... а я вот этакий упрямый ну просто не хочу прошиваться прошивкой с сайта! тогда возникает барьер который нужно преодолеть: портирование!!!

 

Для облегчения портирования мне ударила в голову мысль: а не сделать мне чегоньть такого чтобы можно было в одном IDA развернуть более изученную прошивку и наложить на неё ещё какую-нибудь символьную инфу потом запустить другую IDA и автоматизировать(мощно сказано... следует читать: чуть-чуть упростить :) процесс поиска функций (когда понадобится...) и интерактивного (красиво звучит с этим дизассемблером, а теперь ещё и декомпилятором с версии 5.2 (жаль не ARM платформы, а только ПОКА x86!!!)) наложения имени функции и прочей полезной всячины, тем самым облегчая неблагодарный труд прошивко-реверсо-патчера :)

 

ipc.rar

Выклыдываю плагины к IDA 5.0 и IDA 5.2. недоделаны поэтому копайтесь и реализуйте всё что вам вздумается! Поддерживать буду!

Единственное что может: находить в испытуемом бинарнике(серверный режим) по команде из клиентской консоли (клиентский режим) по определённому количеству байт (начиная с поименнованного!) функции, что именно мне как раз и надо было! :)

 

Работаем так:

1. Запускаем подопытный малоизученный бинарник в IDе №1. жмём ALT-Z. всплывает консоль. вводим команду server. консоль переходит в режим ожидания подключений к TCP-серверу.

2. Запускаем более изученный бинарник в IDе №2 (накладываем там на него символы... и т.п.) ALT-Z. консоль. команда - client. connection people!

3. Давим в IDA №2 на функцию или поименованный байт. нажимаем в его консоли v. видим типа:

 

Segment: name: _text. Address: start: 0x00401000 end: 0x0042000

Addres: 0x00401005

Name: _main

4 Bytes: E9 06 00 00

 

4. команда s в этой же консоли. в другой консоли:

 

[s<=C]: Search

[s<=C]: Name: _main

[s<=C]: 4 Bytes: E9 06 00 00

searching...

bytes not found

 

5. увеличиваем поисковые байты в первой консоли ( команда: p gN 8 ) :

 

client IPC> p gN 8

INI: number of search bytes [gN] set to: 8

 

6. Далее s. и в другой консоли:

 

searching...

0x00403160

 

еврика!!! нашли! хотя чтото я больно громко...

и функция в плагине перебрасывает курсор ИДЫ №1 на начало этой функции (если найдено больше... то соответственно не перебрасывает :)

Изменяя количество поисковых байтов, добиваемся менее тривиального варианта.

Пока усё. Пожже больше! Пишите не забывайте :)

  • Like 4
Ссылка на комментарий
Поделиться на другие сайты

Хм.. интересно..но не всегда так просто... мне кажется по такому же (или почти такому) алгоритму делает сигнатуры SymCreator... вот только тут есть БОЛЬШОЙ подвох...

Вот смотри допустим в первой поршивки есть такая последовательность (привожу команды Ассма):

add r0,#0

add r1,#1

mov r4,#34

 

а во второй прошивке

add r1,#1

mov r4,#34

add r0,#0

 

Видишь разницу?

По логике работы куски кода одинаковы, а по представлению в байтах различно соответственно...

Если и делать такой портер то по крайней мере с зачатками искусственного интеллекта )))

Так что пока с этой задачей и SymCreator + BinEdit справляются в паре не плохо...

 

А , так задумка ниче...хорошая +1

Жизнь - пьяный поэт, я - слово.

Я жесток и грустен, когда ему херово.

Жизнь - старый поэт, жизнь - усталый поэт,

А я... Что я? Его инструмент!...

 

Разработка Broadcom: http://www.rk-team.net/

Новости проекта QuB на Twitter

Ссылка на комментарий
Поделиться на другие сайты

Давно собирался замутить что-то подобное чтобы синхронизировать базы в рантайме: структуры, имена, энумы.

Молодец что сорцы выложил, буду их развивать.

83276525.png
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


×
×
  • Создать...