Форум elfse.com

Здравствуйте, гость ( Вход | Регистрация )

Форум переехал на новый адрес: forum.elfse.com
Текущий форум остаётся в качестве архивного.
Обсудить текущее положение дел можно здесь.
 
Ответить в данную темуНачать новую тему
> BinEdit: HEX-редактор, Портирование простых патчей и функций
khodomay
сообщение 14.2.2010, 13:42
Сообщение #1
Бывалый
Иконка группы
OFF 292 SE

О пользователе

BinEdit

Возможности программы:
- поиск и замена HEX-кода
- портирование простых патчей (встроенный редактор патчей)

Остальные возможности по большей части предназначены для работы с прошивками Samsung, поэтому особо останавливаться на них не буду.
В данном примере рассмотрим:
- открытие прошивки
- портирование функции
Прим.: встроенные функции позволяют портировать как в пределах одной платформы, так и между платформами 2020<--->2010; ]]>портировать функции расположенные в ОЗУ и тд.. ]]>
1) Качаем приложение: Прикрепленный файл   BinEdit_v.2010.05.24.7z ( 896.99 килобайт ) Кол-во скачиваний: 604

2) Запускаем редактор:
Прикрепленное изображение

3) Жмём открыть и выбираем RAW-файл прошивки:
Прикрепленное изображение

4) После загрузки прошивки сканируем её
Прикрепленное изображение

Если требуется, указываем адрес загрузки 44140000, либо 44020000 в зависимости от платформы. Остальные параметры не изменяем, на все сообщения нажимаем ОК (кроме предложения подгрузить ещё один файл).
5) Прошивка загружена в ОЗУ и диасемблирована, готова к работе (поиску, замене hex-значений, сигнатур THUMB и ARM, применению патчей и тд.. и тп.)
Прим.: тут и далее опишу много лишнего, что бы показать некоторые функции, даже те, которые не требуются для портирования функций либо простых адресов патчей. Выполнять все эти действия не обязательно (скажу даже больше - можно было и не сканировать прошивку, а сразу приступить к поиску значений, однако пришлось бы к полученным адресам прибавлять офсет вручную, что не есть удобно. Кроме того, сканирование прошивки упростит межплатформенное портирование).
7) Открываем прошивку, на которую будем портировать необходимые функции.
Действия--->связанный bin--->открыть новый редактор

Прикрепленное изображение

8) Для второй прошивки выполняем сканирование, как было написано в п. [4-5]
9) Переходим к первой прошивке, для которой известны адреса необходимых функций. Переходим по адресу функции:
Код
;K800_R8BF003
0EB0: 00000000 F93C4645; 3AC: BOOK* GUI_GetBook(GUI* gui);

для этого непосредственно вводим перевёрнутый адрес функции F93C4645 ---> 45463CF9 в поле и жмём ENTER
Прикрепленное изображение

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

11) В режиме просмотра HEX-кода выделяем и копируем часть кода для поиска.

Прикрепленное изображение

Прим: количество кода необходимое для корректного поиска может варьироваться и в разных случаях необходимо разное количество байт. Так же различаются и режимы поиска и выделения. Наиболее точным является поиск HEX кода, более приблизительным поиск "сигнатур". Следует отметить, что такой поиск может давать на выходе не один а несколько результатов. Тогда следует проанализировать asm-код каждого полученного адреса. Если таких адресов слишком много, то советую изменить методику поиску значений - как показывает практика, простое выделение большего или меньшего числа кода тут помогает слабо. В таком случае следует "подняться вверх", либо "опуститься вниз" в исходной прошивке и искать соседние адреса, либо проанализировав исходный код искать аналогичные адреса на которые есть переходы (в другой прошивке). У каждого свои методы, тут описываю только основные приёмы.
12) Переходим во вторую прошивку (в нашем случае взял пример порта на W580_R8BE001)
В строку для поиска вводим наш код (я выбирал сигнатуру THUMB, однако можно и в ARM)
Прикрепленное изображение

Если просто нажать ENTER, то автоматически будет выполнен поиск HEX-данных, если выбрать режим поиска сигнатур, то произойдёт поис всех возможных сигнатур в прошивке.
В результате получим:
Прикрепленное изображение

Побайтно перевернув адрес 45364CAD---->AD4C3645 получим нашу функцию
Код
;W580_R8BE001
0EB0: 00000000 AD4C3645; 3AC: BOOK* GUI_GetBook(GUI* gui);

Сравнив исходные коды, как написано в п.10 можно быть окончательно уверенным в правильности портированного.

Некоторые приёмы работы:
1) Выделять слишком много кода, для поиска - бессмысленно.
2) Если найденных значений больше 4-6, то как правило следует изменить методику поиска. Как показывает практика, часто бывает, что ни одно из найденных значений неверно.
3) Если найдено одно значение, особенно если поиск произведён функцией "искать HEX код", то как правило это значение верное. Дополнительно сравнивать asm-коды обоих прошивок нет необходимости, но визуально сравнить полученные и исходные байты всё-же стоит.
4) Как быть когда нужно портировать 10-20 функций с одной прошивки на несколько прошивок? Поочерёдно вводим все необходимые адреса и переходим на них в исходной прошивке.
Прикрепленное изображение

В "истории останутся все адреса", переходя каждый раз к нужному адресу можно копировать байты исходного кода либо просматривать его.
В окне второй прошивки можно загрузить любую другую прошивку, столько раз сколько это потребуется; на сообщение "Буфер файла не пустой..." отвечаем ДА. После того, как открыли прошивку повторяем процедуру сканирования.

Всех возможностей не описывал, для этого пришлось бы потратить не один час времени. Описал только основные функции необходимые для портирования. Данный редактор не является заменой IDA, но может выступать неплохой альтернативой WinHEX, HxD и подобным решениям. При этом практически не уступает им по скорости работы, а по возможностям значительно превосходит их.

Ещё один пример работы с программой: ]]>http://elfse.com/forum/topic1407.html]]>
Прикрепленные файлы
Прикрепленный файл   BinEdit.7z ( 902.19 килобайт ) Кол-во скачиваний: 283
 
Перейти в начало страницы
Профиль пользователяPM
Цитировать сообщение
jurgen
сообщение 12.7.2010, 22:49
Сообщение #2
Участник
Иконка группы
OFF 0 SE

О пользователе

Подскажите, как программой (встроенным редактором патчей) портировать патчи между платформами (db2020->db2010)?
Перейти в начало страницы
Профиль пользователяPM
Цитировать сообщение
khodomay
сообщение 12.7.2010, 23:44
Сообщение #3
Бывалый
Иконка группы
OFF 292 SE

О пользователе

jurgen, Встроенный редактор патчей не совсем корректно портирует даже в пределах одной платформы - на выходе получаем не то, что хотелось. Лучше портировать адреса руками, тогда видно, что портируется и что выходит (видно адреса), хотя можете и встроенным редактором...
Открываете и сканируете две пошивки; открываете редактор, загружаете патч и портируете его на другую прошивку. Однако, многое не будет найдено из-за различий в структурах. Если Вы уже пробовали портировать функции из библиотеки, то думаю поймёте о чём речь. Да, не отрицаю - возможность такая есть, но не всё так просто. Пробуйте. Но, если совсем "не судьба" - портируйте в пределах одной платформы.
Всё. Что ещё добавить к сказанному, просто не знаю.
Перейти в начало страницы
Профиль пользователяPM
Цитировать сообщение
CyberMaster
сообщение 20.9.2010, 3:24
Сообщение #4
Новичок
Иконка группы
OFF 2 SE

О пользователе

Последняя версия BinEdit 2010.05.24
Перейти в начало страницы
Профиль пользователяPM
Цитировать сообщение
Alex_E
сообщение 20.9.2010, 11:49
Сообщение #5
модератор
Иконка группы
OFF 404 SE

О пользователе

добавил новую версию в 1-й пост


--------------------
Nokia 5800 XM 51.0.006 Cracked + 8Gb + Sennheiser HD 201 + МТС (БИТ)
Перейти в начало страницы
Профиль пользователяPM
Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Информация о сайте

Сейчас: 4.2.2012, 6:32
 
 

ELFSE.COM - Эльфы Для SE (Sony Ericsson). Design by AquaCraft © 2008 - 2012. Все права защищены
При копировании любой информации с этого ресурса, гипер-ссылка на наш сайт обязательна!