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

AlexeyK

SGH Open Club
  • Постов

    316
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные AlexeyK

  1. будет ли новая версия программы, в которой будет реализован автоматический поиск в таких прошивках? :jokingly:

    Будет, если будет время и подобная прошивка, желательно не одна. Скорее всего проблемы с определением ремапинга.

    • Like 1
  2. че-то поиск меня смущает:

    прошивка х700..с3

    ищу 20????00??005800 и 20????00????5800, там и там находит по одному адресу, причем адреса разные...

    а в настройках мультипоиск установлен?

    и по какой кнопке ищешь. поиск сигнатуры или Hex?

    • Like 1
  3. в самом конце сканирования прога спрашивает, сохранить ли результаты, надо отвечать Да.

    к сохранению be файла этот вопрос отношения не имеет. Это сохранения базы по прошивке (где и какие данные расположены)

     

    FRAER,

    Возможно в папке befiles есть какой нибудь не правильный be файл. Можно попробовать переименовать эту папку и попробовать открыть файл.

    Сохранить be файл можно на вкладке свойства. кнопочка с дискетой.

    • Like 1
  4. А что касается новых моделей, так в них эти функции просто не реализованы, в частности: http://OldPh.one/index.php?showtopic=38211?p=...mp;#entry407064

    у первых вариантов переноса патча на линейку swift были проблемы с некоторыми функциями патча, вот их и наверное и упразднили :59: . Кстати одно исправление в указанном патче можно было не делать. чтобы не убивались начальные нули надо заключать параметры в кавычки. так было и на X100.

  5. При поиске в программе BinEdit те символы, которые могут быть любыми, можно заменить знаком ?. Переходим в окно с прошивкой U600, переходим на вкладку Код и и ищем команды, которые могли помешать нашему поиску. Очевидно, что это команда LDR R5, =0x30007F78, потому что она содержит адрес. Смотрим код этой команды слева: 394D, переходим в окно с прошивкой U300 и смотрим на нашу последовательность. Находим глазами код "мешающей" команды 394D, стираем это в последовательности, а вместо него ставим ????, т.к. там могут быть любые символы. Получается, что теперь мы будем искать 70B5041C????07D001202860, но поиск этой последовательности тоже ничего не даёт.

     

    Переходим в окно с прошивкой U600 и дальше смотрим, какая команда нам может ещё мешать. Очевидно, что это BEQ loc_20570402, т.к. она тоже содержит адрес. Опять смотрим на её код 07D0, переходим в окно с U300 и заменяем 07D0 в нашей последовательности вопросами. Получается, что мы будем искать 70B5041C????????01202860. Жмём Enter и Вуаля! Появились результаты поиска.

     

    На вкладке Код есть кнопка для копирования, там можн скопировать данные как Hex код, так и как уже готовую сигнатуру для поиска. Ещё в строке поиска есть кнопка "T" которая может расставить ? в соответсвии с командами THUMB и "A" для команд ARM

    • Like 6
  6. Решил тут реализовать одну идею и столкнулся с такой проблемой: почему-то во всех версиях патча для моделей телфонов, начиная с х700 пропали такие мега-полезные функции как выделение/очистка блока памяти и запуск кода по адресу с параметрами (реализованные в первой версии для телефонов X100/X600), что сводит на нет огромный отладочный (и не только) потенциал этого патча?!

     

    Впрочем, патч для х100, выложенный когда-то Алексеем (AlexeyK) тоже не работает, о причинах говорить не буду, не разбирался пока.

     

    странно, именно так и было всё задумано тогда, и вроде работало. в самом патче минимум проверок на адекватность данных, может по этому. для запуска thumb кода надо к адресу прибавлят +1.

     

    PS. Привет, давно не было слышно. :28:

  7. AlexeyK, с x100xeeg1 на x460xeee1.Я ВСЕ патчи которые есть пробовал портировать.ПИШЕТне НАЙДЕН АДРЕС СИГНАТУРы.это самая частая ошибка но есть и другие.НУ ЧЕ Поможеж?

    приводи конкретные примеры, что не находится, как искал и что именно не получается.

    PS. на вкладке "Свойства" в строке эквивалент есть бинокль, попробуй нажать её. Для поиска там используются другие, более сложные алгоритмы. Может, поможет :)

  8. заинтересовал такой вопрос, не совсем, конечно, по теме, но все же...

    в общем как я себе представляю работу какой-либо программы: для работы с периферийными устройствами (в том числе и с фс) программа вызывает функции прерываний операционной системы, под которой она запущена

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

    так вот, в телефоне есть что-то наподобие биоса? или я что-то себе не так представляю?..

     

    пример: мне нужно обработать большой файл, в оперативку весь он не влезет, да это и не нужно...

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

    нужно вызывать определенные функции кокого-то прерывания?

     

    :49::bh:

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

     

    ИХМО. программа, скорее всего, сама не вызывает прерывания операционной системы, а просто считывает данные из оперативной памяти, а вот туда их помещают резидентные модули(ОС) , которые запускаются либо по таймеру, либо по внешним прерываниям.

    • Like 1
  9. Assasin DeNiS, автоматический перенос патчей между прошивками не возможно сделать идеальным, если конечно, речь о нем.

    1. какие прошивки и какой патч переносишь?

    2. каким способом переносишь?

    3. есть и другие вопросы, например, какого характера адрес? (может это и не адрес и его не надо менять), но без ответов на первые 2 их бесполезно задавать.

  10. в настройках должен быть включён обновлённый режим анализа кода и вот это компилируется нормально.

     

    .author f2065,Евгений,Портировал_на_D980XEHJ6,f2065@######.ru,http://2065.nm.ru,350#####,WM###

     

    квычки не обрабатываются, позже будут.

     

     

    Вот к примеру в этом коде компилятор не ругается на одинаковые метки:

     

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

     

     

    .data
    t_myinfo: .ansi 0x0D,0x0A
    .ansi "aaaaa",0x0D,0x0A
    .ansi "bbbbb",0x0D,0x0A
    .ansi "cccccc",0x0D,0x0A
    .equ t_myinfo_size = $-t_myinfo

     

    Всё прекрастно компилируется, только что то лишнее, либо .equ, либо =

     

    tmp1: .ansi 0x00
    .equ t_myinfo_size  tmp1-t_myinfo
    или
    tmp1: .ansi 0x00
    t_myinfo_size = tmp1-t_myinfo
    или
    t_myinfo_size = $-t_myinfo
    или
    .equ t_myinfo_size $-t_myinfo

     

    Следует еще учитывать, что $ -содержит не текущий адрес, а значение PC для поцессора, тоесть на 2 или на 4 больше.

     

    PS. Кстати \n, \t и другие тоже обрабатываются, так что можно писать так

    .data
    t_myinfo: 
    .ansi "\naaaaa\nbbbbb\ncccccc\n"
    t_myinfo_size = $-t_myinfo

  11.  

    Как в исходнике такое описать ? Не вижу чем автоматически рассчитать смещения в таблицу переходов… И как это делают, если не вручную ?

    в описании к компилятору binedit есть про CASE переходы.

    .case Rx, default, metka0, metka1, …. – переход по метке в зависимости от значения в регистре Rx. default – метка на которую будет сделан переход при превышении значением Rx количества меток. Для хранения смещения используется 2 байта. Длина переходов до 65535 байт

     

     

     

    .caseb Rx, default, metka0, metka1, …. – переход по метке в зависимости от значения в регистре Rx. default – метка на которую будет сделан переход при превышении значением Rx количества меток. Для хранения смещения используется 1 байт. Длина переходов до 255 байт

     

    Пример

     

     

     

    .case R2, metka label3 label1 label2 label3

     

     

     

    label1: mov r1 10

     

    b metka

     

    label2: mov r1 11

     

    b metka

     

    label3: mov r1 13

     

    metka:

    • Like 1
  12. f2065 кроме основных текстовых ресурсов в прошивке много и других, которые не ищутся автоматически при загрузке прошивки. Например, ресурсы браузера, строки трассировки. Есть и другие.

     

    Ничто не мешает добавить их отображение вручную. Для этого надо добавить в be файл команду

     

    StringTable adr="0x0" countadr="0x0" default="0x0" name="" Code="UTF8|ANSI|UNICODE|LUNICODE" type="0" mul="0" Offsets="0x0"

     

    соответствено заполнив необходимые значения.

    adr - адрес таблицы адресов или смещений до строк.

    countadr - адрес по которому хранится количество этих строк

    default - количество строк по умолчанию

    name - название которое будет отображатся в списке языковых ресурсов

    Code - кодировка строк. надо выбрать один из предложенных вариантов

    type, mul и Offsets можно не менять, так как они для прошивок Samsung не нужны.

  13. В моей прошивке B100XEHE1 не нашел автоматом таблицу колбеков (callback), вручную тоже не ищется. Весь код неправильно дизассемблируется. Я так понимаю, проблема с выбором базового адреса. Тогда какой указать ???

    потому как не правильно и надо определить адрес загрузки. Приведи дизассемблированный код с начала прошивки. может получится помочь.

    • Like 1
  14. BinEdit при компиляции спокойно пропускает одинаковые метки!!!

     

    Это баг или так и надо ???

     

    Лучше конечно с такими вопросами приводить код :laugh3:

     

    По идее это баг и насколько помню, компилятор должен сообщать об ошибке, но после появления регионов namespace использование одинаковых меток вполне допустимо в разных регионах.

  15. видимо какая-то опция настроек винована, но вот какая ?

    попробуй предыдущей версией программы. Этот модуль в последнее время вроде не изменял.

     

    Хотя бы МТК хочу попробовать свои силы в создании своей таблицы шрифтов и т.д., для личных целей.

    для этого всё в программе есть уже больше года точно. Я использовался только binedit при раскопках, для разбора всей структуры шрифтов хватило полтора дня свободного времени.

    PS. Могу подсказать если, что (в пределах возможного) :) через личку или icq

    • Like 1
  16. Зачем городить огород и тратить место,если есть готовые промежуточные переходы

    В принципе в настройках компилятора есть пункт "Искать адреса редиректов для длинных переходов". во многих случаях компилятор сам сможет найти нужный редирект и сделать вызов через него.

     

    PS. правда настройка мало тестировалась и по умолчанию отключена. На вариантах которыя я сам проверял вроде работало, но мало статистики.

    • Like 6
  17. возможно ли реализовать поддержку китайских прошивок в бин формате. Как раз поиск и изменение языка в китах мы начинали именно с этой проги, только она поддерживала UTF-8 left.

    Что именно подразумевается под поддержкой, и какие именно модели китайских прошивок надо поддерживать (MTK, Spreadtrum или ещё что)?

     

    На данный момент программе всё равно, от какого телефона прошивка, лишь бы она была для ARM процессора. Единственное для некоторых производителей есть сканирование стандартных ресурсов.

     

    Для большинства прошивок от MTK есть определение ID прошивки, плюс есть поддержка некоторых разновидностей строковых ресурсов для этих прошивок.

     

    PS. я имею некоторое отношение к проекту GStarTools. т.е. разработки, использованные там, я могу только частично использовать здесь, так как это не коммерческий проект.

  18. У меня вопрос, при нажатие на обновление в программе выходит сообщение "невозможно соединиться с сервером" в связи с этим не могу обновить программу с чем это связано.

    в программе реализовано соединение без прокси. или экран межсетевой не пускает.

     

    вот прямая ссылка на обновление http://binedit.sgh.ru/BinEdit_min.7z

    • Like 2
  19. AlexeyK, по поводу опций:

     

    <nord offset="0x2346" to="0A2114316439000000000531" />

     

    Лучше компилировать так:

    <nord offset="0x2346" to="0A211431" />
    <nord offset="0x234A" to="643900000000" req="no"/>
    <nord offset="0x2350" to="0531" />

     

    Тогда патч не будет отмечен неустановленным, если выбрана опция не по умолчанию.

    И данных отмены нет...

     

    поправлю.

    Пока это можно делать вручную. Есть директивы .patchcoment и .req

    перед опцией пишем

    .patchcoment

    .req N

     

    после опции

    .patchcoment

    .req Y

     

    или наоборот :59:

    • Like 3
  20. zizu, [AlaSToR] попробую повторить и исправить, я с таким ни разу не сталкивался.

    Sylar на 100% не возможно. Так как вариантов "компенсации" много. можно только добавлять варианты.

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

    Например,

     

    BX PC

    LDR R12,=adres

    bx R12

     

    здесь запуск может быть как на BX или THUMB кода, так и на LDR из ARM кода. И это ещё самый простой пример.

     

    В общем нужны примеры, тех функций которые не находятся с указанием кода с места вызова и кода самих функций, желательно с HEX данными и адресами их расположения, ну и название прошивки.

    • Like 1
  21. Появилось немного времени :( добавил компиляцию опций. Вот описание:

     

    Компиляция опций.

     

    .options [check|list] , "Наименование опций" - начала формирования блока опций. По умолчанию формируются опции типа list

    .option [def|default] [, "Наименование опции"] – заголовок отдельной опции. Опция с ключом default будет использована в основном коде. Приоритет имеет последняя опция с таким ключом.

     

    .endoptions - завершение формирования блока опций

     

    Примечание. Внутри определения опций не допускается изменение текущего адреса компиляции. В основной код попадает кусок после директивы .options и до первой директивы .option или после директивы .option с ключом default. Длину блоков можно не подбирать, при компиляции будет произведено автоматическое выравнивание длины. Пустое место заполняется нулями, что эквивалентно команде NOP. Для опций типа check наименование опции можно не использовать, всё равно для варианта on будет использоваться первая следующая директива .option, а для off – вторая.

    Пример.

     

    02346:

    ;Код до начала описания опций

    mov R1, 10

    add R1, 20

    ;заголовок опций

    .options list, "опции списком"

    ;этот код окажется в основном коде, если в директивах .option не будет ключа default

    bl 0x12344

    ;описание первой опции

    .option "Переход на адрес 0x3456"

     

    bl 0x3456

     

    ;описание второй опции

    .option def, "Sub R1, 100"

     

    sub R1,100

     

    ;описание третьей опции

    .option "несколько команд"

     

    mov R0, R1

    add R1,34

    mul r0,r1

     

    ;описание четвёртой опции

    .option "данные"

     

    .word $+7

     

    ;завершения описания опции

    .endoptions

     

    ;код который будет после опций

    add R1,5

     

     

    получается такое

     

    <?xml version="1.0" encoding="Windows-1251"?>

    <patch version="0.5">

    <info title="" id="00000000" group="" version="">

    <description short="" />

    <author nickname="AlexeyK" fullname="Калёнов Алексей Владимирович" status="Автор" email="" www="" icq="282456587" donate="" />

    </info>

     

    <patchdata firmware="" >

    <changes>

    <nord offset="0x2346" to="0A2114316439000000000531" />

     

    </changes>

     

    <options>

    <list title="опции списком" offset="0x234A" type="data" values="Переход на адрес 0x3456=01F084F80000;Sub R1, 100=643900000000;несколько команд=081C22314843;данные=532300000000" />

     

    </options>

    </patchdata>

     

    </patch>

     

    Давно не занимался патчами, по этому вопрос. Всё ли так получается как должно быть.

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

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