Сейчас на форуме: asfa, bartolomeo (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Помогите с исследованием прошивки для модема
Посл.ответ Сообщение

Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 марта 2012 07:44
· Личное сообщение · #1

Дорого времени суток.

Суть задачи в написании генератора прошивок для определенного 3Г модема. Задача каждой прошивки изменить imei модема.

У меня есть примеры таких прошивок. Сравнив их в ВинХексе, увидел, что они все отличаются на 10 байт. 8 из них это имей который нужно менять, а еще 2 я так понял и нужны для проверки.

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

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

Я открыл программу в ОллиДбг.
Трассировка не работает (не знаю почему, но если трассировать программу с заходим в функции, то не определяется модем)

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

По идее я зная код по которому идет проверка, должен был просто поставить точку прерывания, когда этот код считается из памяти. Но дело в том, что проводя поиск по памяти, я не могу его найти. Имей кстати тоже. Получается, они читаются из файла в нужный момент (прошивка и сама программа которая прошивает -- это 1н файл)

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

Я совсем новичок, надеюсь на Вашу помощь.

Заранее благодарен.




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 08 марта 2012 10:08
· Личное сообщение · #2

Вот здесь.

-----
Следуй за белым кроликом





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 08 марта 2012 12:37
· Личное сообщение · #3

или больше своей работы выкладывай, или в запросы.

-----
[nice coder and reverser]




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 марта 2012 18:13
· Личное сообщение · #4

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

получается, что мне нужно установить бряк на событие когда файл считает сам себя или когда в регистры попадет код проверки. Но насколько я понял (читал справочник по ОллиДбг предлагаемый в начале раздела) все бряки ставятся на конкретную строчку и срабатывают при выполнении условия. А мне нужно отследить событие.

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

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

Возможно подпись к кнопке строковая, но если и так, я сам не догадался как это использовать

З,Ы как добавлять новую инфу? апдейтом первого сообщения или новым? в правилах не нашел=)




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 08 марта 2012 19:43
· Личное сообщение · #5

Двигаться нужно к свету, к знаниям, что бы хотя бы правильно поставить вопрос... Где прошивалка? Где прошивка? Что вы пытаетесь отлаживать? На какие 'события' хотите поставить бряк? А так вам нужно двигаться туда, куда указал в прошлом своём посте.

-----
Следуй за белым кроликом




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 марта 2012 20:35
· Личное сообщение · #6

"прошивка и сама программа которая прошивает -- это 1н файл"

я писал в 1ом посте, возможно не совсем понятно. Прошивка и прошивалка лежат в 1ом файле.

я этот файл и запускаю. Мне нужно найти место где происходит любое из 2х событий

1 - программа начинает читать данные из самой себя
2 - в регистры попадает значение FA 59

Надеюсь так я более понятно выразил свои мысли

насчет второго пункта, насколько я понял, нужно добавить бряк по условию EAX==FA59 но бряк то поставиться на строку и в ней проверит условие.
Вот именно этот момент мне непонятен

З.Ы. эти условия я взял исходя из того, что значения FA 59 нет в памяти программы, а следовательно, раз на него должна идти проверка то он должен считаться из диска и попасть в регистры. Если в моих рассуждениях есть ошибка, то прошу на нее указать

З.З.Ы FA 59 -- это именно те 2 байта о которых я писал в первом посте. Мне нужно найти по какому правилу они получаются из имея



Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 08 марта 2012 20:36
· Личное сообщение · #7

ставьте бряк на ReadFile или его аналоги, как найдете вычитку IMEI - ставьте бряк на доступ к памяти и ждите.

-----
старый пень




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 09 марта 2012 11:53
· Личное сообщение · #8

CyLLIee_3JIo пишет:
З.Ы. эти условия я взял исходя из того, что значения FA 59 нет в памяти программы, а следовательно, раз на него должна идти проверка то он должен считаться из диска и попасть в регистры. Если в моих рассуждениях есть ошибка, то прошу на нее указать

Прошивка запросто может лежать в exe файле как ресурс, или быть просто дописанной в конец бинаря, т.е. не видна в ресурсах. Прошивка не обязательно храниться в бинаре в голом виде, может быть как сжата, каким-нить zlib, так и зашифрована. И соответсвенно происходит разжатие перед самым моментом прошивания. Соответственно, есть два пути:
1) изучаем где открывается "порт" для общения с модемом, и разбирая команды общения с модемом ищем где же будет чтение/расшифровка/распаковка прошивки.
2) изучаем exe файл, смотрим где у него аномально большие куски данных. Т.е. на глаз статическим анализом находим где там прошивка.
Но, запросто может быть так, что зашифрованная прошивка льется прямо в модем, а расшифровка делается на стороне модема.

Поставить бряку на запись в регистр нельзя. Архитектура железа не дает такой возможности.
FA 59 - это вообще что за значение такое? Почему именно оно важно?

-----
Реверсивная инженерия - написание кода идентичного натуральному





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 09 марта 2012 19:11
· Личное сообщение · #9

Судя по тому что он пишет...
Имейка в открытом виде. Значит нет никакой шифровки. Если не получается сменить имей, значит прога начинает орать на крк. Значит можно дернуть алго. Тупо ищем чтение прошивки(реадфайл скорее всего), потом бряк на чтение нужных байт. Дальше смотрим алго. Либо другой вариант. Вспоминаем что такое наши модемы мтс и мегафон на самом деле huawei и zte. А для них есть фирменные прошивальщики. И возможно там есть функа смены IMEI


 eXeL@B —› Вопросы новичков —› Помогите с исследованием прошивки для модема
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати