Страница 1 из 4

ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 12:23:00
Призрачный Суслик
Вот тут давнишняя задача - есть некоторое ПО для некоторого устройства использующего Microchip PIC16C65А. Прошивка дизассемблирована (ровно 4800 значащих строк) и корректно ассемблируется в исходный файл. Но при этом ПО не работает нормально и корректно на реальном железе. Есть нюанс, проверка проводилась на PIC16F877, но ничего такого, что есть в 16С65 и отсутствует в 16F877 не замечено (судя по найденным обращениям к регистрам ввода вывода из аппаратной переферии используются только таймеры-счетчики и система прерываний). Регистры из используемых 1:1.

Есть первое предположения, что в "открытую" версию внесена некоторые "опечатки".

Или всё таки влияют некоторые различия 16С65 и 16F877 ?


Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных ОМК. Сам я не программист, да и другие люди к проекту близкие тоже и тяжело разбираться в алгоритмах. Вот как бы можно раздербанить программу на какие-то более понятные виды изображения. Квадратики-стрелочки или еще как-то ?

Из-за большой и крайне сложной периферии сымитировать работу ПО в симуляторах невозможно. Судя по годам создания, написано было на ассемблере, но понять по коду, ассемблер это или компилятор с языка высокого уровня, я увы не могу.

Само ПО или его части публиковаться, к сожалению, не будут.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 12:53:24
OKF
Одни проблемы. Со всех сторон.)
Ну и непонятно. ПО на оригинальном 65 работает как надо? А не работает только на клоне 877?
Просто людей нужно заинтересовать и они всё сделают.)

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:03:18
Призрачный Суслик
Неизвестно. Задача использовать PIC16F877 вместо PIC16C65A стояла с самого начала, поэтому с PIC16C65A проверка не проводилась. На данный момент провести её сложно, хотя и возможно. ПО работало, но "не совсем корректно". В смысле что процессор не зависал, но и нормальной работы согласно документации достигнуть не удалось.

Именно для этого я и ищу ПО, в ручную пытаться "размотать" не получилось. "Безобразно Бешеных Бабок" для нанятия людей "со стороны" не подвезли.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:29:57
Mursik
А в PROTEUS-е погонять? Там модель того PIC16C65A есть?

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:35:49
Призрачный Суслик
А почитать сообщение по внимательнее ? Там написано ! (для ленящихся читать уточню: "для работы нужна переферия, которая достаточно сложна и имеет не только электрические, но и механические и гидравлические компоненты" ни один симулятор, из известных мне, на такое не способен).

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:37:28
abc
Для старых ПИК-ов вполне хватает обычного дизассемблера. Если не умеете - учитесь.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:41:17
Призрачный Суслик
Всё дизассемблировано давно. Выделены все подпрограммы и зафиксированы все точки входа и выхода в них. Но этого мало - восстановить алгоримы не получается. Нужно ПО , если таковое существует, которое облегчает разбор ассемблерного текста.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:53:19
BOB51
Никакое ПО не обеспечивает учёта всех особенностей работы внешней периферии.
Эту задачу можно решить только симуляция по алгоритму работы конечного изделия, в котором тот МК с программой используется.
Или садиться в позу ёги заниматься медитационными размышлениями.
8)
Касательно разбора ассемблерного текста...
Листочки бумаги, машинные коды и их "перевод" в мнемоники ассемблера, затем карандаши в лапки и анализ переходов... Далее смотрим чего нарылось...
Такое относительно легко для I8080/85, Z80 и MCS51, у ПИКовых заметно помуторнее перевод из кода в мнемонику.
Но вдруг у кого получится...
:dont_know:

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 13:57:19
abc
Всё дизассемблировано давно.
Тем более.
Если есть куски кода, то только знание работы этого МК даст вам возможность заставить работать эти куски на 877.
Также, всю "лишнюю" периферию, что есть в 877, но отсутствует в 65, крайне желательно принудительно отключать при инициализации МК.
Вполне возможно (точно не скажу) что даже отдельные биты в конфиге МК у них имеют разное значение.
Вы хоть это сделали ?

Есть (очень малая) вероятность того, что объяснить, как работает и что делает тот или иной кусок, вам поможет какое-нибудь ИИ-чудо.
Но это такое... почти как эмуляция симуляции трехпрограммника...

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:02:05
OKF
Так ТС и его окружение ни бе, ни ме в программировании. И он ищет волшебную пилюлю в в виде непонятно чего, но что бы у него работало как ему хочется. ППЦ, конечно.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:11:20
Муркиз
Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных
А они( алгоритмы) в этом коде вообще-то есть ?
Или это программа из тех, что описана для отхватить бабок от лохов и смыться ? Раз там одни обращение к таймерам.

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

И кто кого в итоге обует ?

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:16:45
Призрачный Суслик
Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму - что из чего получается. Какая ячейка памяти связана с какими событиями, какие математические операции выполняются над переменными. В общем любое ПО которое облегчает ковыряние в исходниках другого ПО.

Симуляция работы конечного изделия в полной форме очень сложна, даже непонятно на чем симулировать. Это не мигалка светодиодами и даже не экскаватор, всё намного сложнее. Поэтому задача размотать исходный алгоритм работы и представить его в виде по которому можно будет заказать написание нового ПО под новый микроконтролёр и модернизированную переферию. В "старой" перефирии используется немало снятых с производства, хотя еще и относительно доступных микросхем. Да и сам PIC16C65A вроде как снят с производства да и PIC18F877 тоже не "новый" и может довольно быстро исчезнуть.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:22:35
jcxz
[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796620#p4796620"]Всё дизассемблировано давно. Выделены все подпрограммы и зафиксированы все точки входа и выхода в них.[/uquote]Как вы можете это утверждать если по вашему же утверждению:[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796594#p4796594"]Сам я не программист[/uquote]?
Всё равно что если бы вам дали листок с набором закорючек и сказали, что это текст на суахили. Как вы можете быть в этом уверены, если ни черта не понимаете в суахили?
Ваши "подпрограммы" может быть - просто наборы мусора. Потому как дизассемблер принял данные за код, а код - за данные. "Непрограммист" этого не заметит.
[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796608#p4796608"]"Безобразно Бешеных Бабок" для нанятия людей "со стороны" не подвезли.[/uquote]тогда 2 выхода:
1. Найти/заработать/украсть эти бабки. И нанять.
2. Научиться самому.

Добавлено after 1 minute 26 seconds:
[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796620#p4796620"]Нужно ПО , если таковое существует, которое облегчает разбор ассемблерного текста.[/uquote]Такое ПО существует и находится оно в мозгу программиста. 8)

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:23:27
abc
Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму
Это всё лоховство и недомыслие, навязываемые вам разными ИИшечками. Без обид.
Сейчас глянул их даташиты.
У 65-го РОНы начинаются с адреса 0x0С, а у 877 - с 0x20.
Давайте, скажите мне, что и это уже скорректировано и всё равно нихрена не получается :))

да, сорри, смотрел для 61

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:28:54
Призрачный Суслик
Насколько удалось установить, обращение идёт только к портам ввода/вывода к таймеру и задействованы прерывания.

Обращения к регистрам SPI, UART, АЦП и сторожевого таймера не найдено. Или искать не умеем правильно.

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

ПО было написано в 1998-1999 году.

Добавлено after 3 minutes 29 seconds:
Одинаковые адреса там с 20h у обоих первая страница РОНов, а вторая с A0h. Вы что-то не там смотрите.

У PIC16F877 просто 4 набора, а у PIC16C65A - два. Так старшие просто не используются.

Все адреса и управляющие биты были проверены. Тут вопросов нет. Или какие то нюансы или всё таки что-то с программой не то.

Во первых я не один работаю над этим. Во вторых программистом считаю человека, создающего программы, а не понимающего, что на бумажке написаны не каракули. Ассемблер Microchip, немного знаю, книжки соответствующие читал, а не просто так. Естественно тут просто уровня опыта и знаний недостаточно для понимания, что происходит в программе в общем, а не того, что "из ячейки с адресом ХХ переписано в порт с такой то переферии".

Составлялись, сначала списки всех вызовов подпрограмм CALL (АДР.) Выявлялись точки входа. Предполагая, что каждая подпрограмма может иметь ни одну точку входа, примерно группировались зоны вызовов. В этих зонах велся поиск команд "RET" для начала в сторону больших адресов, а так-же команд безусловного и условного перехода на адреса младше адреса входа. Ну собственнотвсё - находился участок памяти обособленный из которого наружу нет ни одного перехода, а внутри есть как минимум одна команда RET и в который ведут один или более CALL. Использовался Microsoft EXEL.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:43:52
Муркиз
На каком основании вы уверены, что "алгоритмы" старого ПО будут годны для использовании на новом оборудовании ?

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

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:45:14
jcxz
[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796640#p4796640"]Во первых я не один работаю над этим.[/uquote]Что тогда мешает скинуться всем коллективом, описать требуемый алгоритм работы устройства и создать соответствующую тему в разделе "Предлагаю работу"?
Даже дизассемблировать ничего не нужно. Тем более, что существующая прошивка всё равно толком не работает (по вашим же утверждениям).
4800 строк - не бог весть какой сложности программа. Особенно если это строки асма, а не си.

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

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:56:39
Призрачный Суслик
Для этого надо и выяснить что так в программе и как ?

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

Если там нет искомого - то увы, а если есть - то всё хорошо. Тут уже и финансирование появится и программиста "нужного" нанять можно.

Была надежда, что есть какое-то ПО, облегчающее, в том или другом виде, анализ программ.

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 14:57:11
Муркиз
Да тем, что для решения такой задачи сначала требуется создать сначала функциональную модель, затем для нее нужно сформировать и свести математическую модель и доказать возможность ее существования и достаточности для получения решения, затем уже идёт построение алгоритмической модели просчет ее устойчивости, и только после этого начинается этап перевода ее в программный код, который тоже имеет несколько отнюдь не чисто кодописных задач.

И где вы таких программистов найдете сейчас ? И не простого горбача - тут нужны прикладные программисты - которые в первую очередь должны быть специалистами по реализуемой теме. А таких прикладников-программистов никто вообще не выпускают. Считают, что достаточно математиков-программистов. И на решение прикладных задач их знаний недостаточно.

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

Re: ПО облегчающее реверс инженеринг прошивок ОМК.

Добавлено: Ср мар 11, 2026 15:00:24
Призрачный Суслик
Так в том всё и есть, что в 1998-1999 годах задача была решена людьми по умнее нас, нынешних, результатом чего, стало к данное ПО. Исходники были утрачены вместе со стендовым оборудованием. А прошивка сохранилась.

Почему нет то ? Собственно это перенесенный на двоичную арифметику алгоритм.

Есть , конечно, шанс, что задача решена не была, а ПО написано на "отвали". Вроде в те годы люди по честнее были. Ну вот в этом задача и состоит. Разобраться.