Reverse Engineering. Пример работы.

В очередной раз я решил написать "ненужную" статью и потратить наше время.

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

----------------------<cut>----------------------

I. Что это такое? (WiKi)

Обра́тная разрабо́тка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.

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

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

II. Зачем это надо?

Я приобрел несколько камер видео-наблюдения и в одну из них решил поставить альтернативную прошивку.
Прошивка подошла, устройство работало, но перестал работать wi-fi модуль.
После данной неприятности и перебора около 10 различных прошивок, я решил установить прежнюю прошивку, но саму оригинальную прошивку я не смог нигде найти. Завод-изготовитель отказался отвечать на письма, продавец сообщил, что завод не предоставляет прошивку т.к. она является их частной собственностью.
Все, что мне оставалось — это смириться с данной неприятностью (неработающим wi-fi) или постараться что-то сделать. Что я и сделал.
После получения прошивки со 2-рой аналогичной камеры, я установил прошивку на сломанную и восстановил её полную работоспособность.

III. Что нужно для работы?

1. USB-to-UART serial converter
2. устройство-донор
3. устройство-реципиент
4. программа Kermit 95 (работает в среде windows XP, запускается через virtual pc) (в архиве)
5. программа Jedit (в архиве)
6. программа HEX2BIN (в архиве)
7. дополнительные скрипты к программам (в архиве)

IV. Начало работы

1. Первым делом необходимо в правильной последовательности подключить конвертер к устройство

Reverse Engineering. Пример работы.

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

2. После установки драйверов на юсб-конвертер, нужно определить рабочий порт

Reverse Engineering. Пример работы.

в моё случае это был COM3

3. Файл "capcam.kds" (в архиве) помещается в папку с установленной программой Kermit 95.

4. В среде Virtual PC (программа кермит 95 выдавала ошибку при установке в среде windows 7) запускается программа Kermit 95 и в окне поочередно вводятся строки.

Reverse Engineering. Пример работы.

set modem type direct
set port com3 (вводится порт, который был определен выше)
set speed 115200
set flow none
set parity none
take capcam.kds

5. Командой ALT-X окно переключается в режим терминала.
После этого момента необходимо подключить питание к устройству и при появлении надписей нажимать клавишу ESC до остановки загрузки.

Reverse Engineering. Пример работы.

остановившись на строке bootloader >, будет необходимо ввести команду "ls".
Всю появившуюся информацию необходимо сохранить, например в блокнот.

V. Расчет размера файлов

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

Для этого будет необходимо воспользоваться калькулятором planetcalc.ru/375/

Рассчитывается всё следующим образом:

Image: 0 name:BOOT INFO base:0x7F010000 size:0x00000038 exec:0x7F010000 -af
Image: 7 name:linux.bin base:0x7F020000 size:0x000AE21C exec:0x00008000 -acxz
Image: 6 name:romfs.img base:0x7F0D0000 size:0x0010C000 exec:0x7F0D0000 -a

Из представленного будет нужно выделенное, т.е

Для Image 0 это 0038
Для Image 7 это AE21C
Для Image 6 это 10C000

Поочередно, через онлайн-калькулятор, переводятся данные значения.

Для Image 0 это 0038 = 56
Для Image 7 это AE21C = 2786
Для Image 6 это 10C000 = 4288

\\ Цифры округляются в большую сторону \\

VI. Процесс получения информации

Размеры файлов известны. Все необходимые данные для начала получены.

Подготавливаются данные строки

CAPCAM 0x7F010000 56 boot.txt
CAPCAM 0x7f020000 2786 kernel.txt
CAPCAM 0x7F0D0000 4288 romfs.txt

\\ 0x7F010000, 0x7f020000 и 0x7F0D0000 ранее были известны(после ввода ls в bootloader) и соответствуют "base" \\

Reverse Engineering. Пример работы.

Необходимо вернуться в режим консоли в программе Kermit 95 и ввести поочередно ранее подготовленные строки.

Reverse Engineering. Пример работы.

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

Будет необходимо это проделать для каждого кода.
В результате в папке с программой появится файлы boot.txt, kernel.txt, romfs.txt

\\ В случае, если в памяти камеры 2 мегабайта, будет необходимо еще код CAPCAM 0x7F180000 5000 webui.txt, если памяти 4 мегабайта, то CAPCAM 0x7F200000 5000 webui.txt \\

VII. Расшифровка результатов

После получения всех файлов, программа kermit 95 и устройство будет уже не нужно.

1. Запускается программа JEdit

данной программой открываются полученные файлы

2. далее необходимо открыть скрипт editcapture.bsh (в архиве)

Reverse Engineering. Пример работы.

После открытия необходимо подождать несколько секунд до получения следующего результата:

Reverse Engineering. Пример работы.

а конце кода необходимо удалить строки FF FF FF, если таковы будут.

3. полученный код нужно сохранить с разрешением .hex

4. необходимо запустить HEX2BIN и перенести в окно полученный файл с разрешением .hex

Reverse Engineering. Пример работы.

указать новое название файла, например, для kernel.hex — kernel.bin и т.д.

5. проделать данную манипуляцию со всеми полученными ранее файлами.

VIII. Вывод.

Это методика, которую я использовал для получения нужного мне результата.
Возможно, кому-то это может помочь. Если так, то мне будет от этого только приятно.

Спасибо за внимание!

Необходимо зарегистрироваться чтобы прочитать текст или скачать файлы