Заголовок сообщения: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 12:23:00
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Вот тут давнишняя задача - есть некоторое ПО для некоторого устройства использующего Microchip PIC16C65А. Прошивка дизассемблирована (ровно 4800 значащих строк) и корректно ассемблируется в исходный файл. Но при этом ПО не работает нормально и корректно на реальном железе. Есть нюанс, проверка проводилась на PIC16F877, но ничего такого, что есть в 16С65 и отсутствует в 16F877 не замечено (судя по найденным обращениям к регистрам ввода вывода из аппаратной переферии используются только таймеры-счетчики и система прерываний). Регистры из используемых 1:1.
Есть первое предположения, что в "открытую" версию внесена некоторые "опечатки".
Или всё таки влияют некоторые различия 16С65 и 16F877 ?
Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных ОМК. Сам я не программист, да и другие люди к проекту близкие тоже и тяжело разбираться в алгоритмах. Вот как бы можно раздербанить программу на какие-то более понятные виды изображения. Квадратики-стрелочки или еще как-то ?
Из-за большой и крайне сложной периферии сымитировать работу ПО в симуляторах невозможно. Судя по годам создания, написано было на ассемблере, но понять по коду, ассемблер это или компилятор с языка высокого уровня, я увы не могу.
Само ПО или его части публиковаться, к сожалению, не будут.
Одни проблемы. Со всех сторон.) Ну и непонятно. ПО на оригинальном 65 работает как надо? А не работает только на клоне 877? Просто людей нужно заинтересовать и они всё сделают.)
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 13:03:18
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Неизвестно. Задача использовать PIC16F877 вместо PIC16C65A стояла с самого начала, поэтому с PIC16C65A проверка не проводилась. На данный момент провести её сложно, хотя и возможно. ПО работало, но "не совсем корректно". В смысле что процессор не зависал, но и нормальной работы согласно документации достигнуть не удалось.
Именно для этого я и ищу ПО, в ручную пытаться "размотать" не получилось. "Безобразно Бешеных Бабок" для нанятия людей "со стороны" не подвезли.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 13:35:49
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
А почитать сообщение по внимательнее ? Там написано ! (для ленящихся читать уточню: "для работы нужна переферия, которая достаточно сложна и имеет не только электрические, но и механические и гидравлические компоненты" ни один симулятор, из известных мне, на такое не способен).
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 13:43:13, всего редактировалось 1 раз.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 13:41:17
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Всё дизассемблировано давно. Выделены все подпрограммы и зафиксированы все точки входа и выхода в них. Но этого мало - восстановить алгоримы не получается. Нужно ПО , если таковое существует, которое облегчает разбор ассемблерного текста.
Никакое ПО не обеспечивает учёта всех особенностей работы внешней периферии. Эту задачу можно решить только симуляция по алгоритму работы конечного изделия, в котором тот МК с программой используется. Или садиться в позу ёги заниматься медитационными размышлениями. Касательно разбора ассемблерного текста... Листочки бумаги, машинные коды и их "перевод" в мнемоники ассемблера, затем карандаши в лапки и анализ переходов... Далее смотрим чего нарылось... Такое относительно легко для I8080/85, Z80 и MCS51, у ПИКовых заметно помуторнее перевод из кода в мнемонику. Но вдруг у кого получится...
Последний раз редактировалось BOB51 Ср мар 11, 2026 14:05:39, всего редактировалось 2 раз(а).
Тем более. Если есть куски кода, то только знание работы этого МК даст вам возможность заставить работать эти куски на 877. Также, всю "лишнюю" периферию, что есть в 877, но отсутствует в 65, крайне желательно принудительно отключать при инициализации МК. Вполне возможно (точно не скажу) что даже отдельные биты в конфиге МК у них имеют разное значение. Вы хоть это сделали ?
Есть (очень малая) вероятность того, что объяснить, как работает и что делает тот или иной кусок, вам поможет какое-нибудь ИИ-чудо. Но это такое... почти как эмуляция симуляции трехпрограммника...
Так ТС и его окружение ни бе, ни ме в программировании. И он ищет волшебную пилюлю в в виде непонятно чего, но что бы у него работало как ему хочется. ППЦ, конечно.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:11:20
Друг Кота
Карма: 107
Рейтинг сообщений: 3852
Зарегистрирован: Пн фев 09, 2009 22:19:49 Сообщений: 25630 Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения:0
Цитата:
Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных
А они( алгоритмы) в этом коде вообще-то есть ? Или это программа из тех, что описана для отхватить бабок от лохов и смыться ? Раз там одни обращение к таймерам.
Развелось тут ловкачей, которые готовят получить реализацию своих проектов под девизом " тестовых заданий для определения квалификации".
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:16:45
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму - что из чего получается. Какая ячейка памяти связана с какими событиями, какие математические операции выполняются над переменными. В общем любое ПО которое облегчает ковыряние в исходниках другого ПО.
Симуляция работы конечного изделия в полной форме очень сложна, даже непонятно на чем симулировать. Это не мигалка светодиодами и даже не экскаватор, всё намного сложнее. Поэтому задача размотать исходный алгоритм работы и представить его в виде по которому можно будет заказать написание нового ПО под новый микроконтролёр и модернизированную переферию. В "старой" перефирии используется немало снятых с производства, хотя еще и относительно доступных микросхем. Да и сам PIC16C65A вроде как снят с производства да и PIC18F877 тоже не "новый" и может довольно быстро исчезнуть.
? Всё равно что если бы вам дали листок с набором закорючек и сказали, что это текст на суахили. Как вы можете быть в этом уверены, если ни черта не понимаете в суахили? Ваши "подпрограммы" может быть - просто наборы мусора. Потому как дизассемблер принял данные за код, а код - за данные. "Непрограммист" этого не заметит.
Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму
Это всё лоховство и недомыслие, навязываемые вам разными ИИшечками. Без обид. Сейчас глянул их даташиты. У 65-го РОНы начинаются с адреса 0x0С, а у 877 - с 0x20. Давайте, скажите мне, что и это уже скорректировано и всё равно нихрена не получается да, сорри, смотрел для 61
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:28:54
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Насколько удалось установить, обращение идёт только к портам ввода/вывода к таймеру и задействованы прерывания.
Обращения к регистрам SPI, UART, АЦП и сторожевого таймера не найдено. Или искать не умеем правильно.
Один из таймеров используется в фиксированном режиме для вызова прерывания, два других не очень понятно как, но постоянно переконфигурируются.
ПО было написано в 1998-1999 году.
Добавлено after 3 minutes 29 seconds: Одинаковые адреса там с 20h у обоих первая страница РОНов, а вторая с A0h. Вы что-то не там смотрите.
У PIC16F877 просто 4 набора, а у PIC16C65A - два. Так старшие просто не используются.
Все адреса и управляющие биты были проверены. Тут вопросов нет. Или какие то нюансы или всё таки что-то с программой не то.
Во первых я не один работаю над этим. Во вторых программистом считаю человека, создающего программы, а не понимающего, что на бумажке написаны не каракули. Ассемблер Microchip, немного знаю, книжки соответствующие читал, а не просто так. Естественно тут просто уровня опыта и знаний недостаточно для понимания, что происходит в программе в общем, а не того, что "из ячейки с адресом ХХ переписано в порт с такой то переферии".
Составлялись, сначала списки всех вызовов подпрограмм CALL (АДР.) Выявлялись точки входа. Предполагая, что каждая подпрограмма может иметь ни одну точку входа, примерно группировались зоны вызовов. В этих зонах велся поиск команд "RET" для начала в сторону больших адресов, а так-же команд безусловного и условного перехода на адреса младше адреса входа. Ну собственнотвсё - находился участок памяти обособленный из которого наружу нет ни одного перехода, а внутри есть как минимум одна команда RET и в который ведут один или более CALL. Использовался Microsoft EXEL.
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 14:49:05, всего редактировалось 1 раз.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:43:52
Друг Кота
Карма: 107
Рейтинг сообщений: 3852
Зарегистрирован: Пн фев 09, 2009 22:19:49 Сообщений: 25630 Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения:0
На каком основании вы уверены, что "алгоритмы" старого ПО будут годны для использовании на новом оборудовании ?
Кстати, такая ошибка является основной для всех доморощенных разработчиков разряда "достаточно знать несколько операторов и систему регистров". Поэтому у них в итоге и ничего не работает.
Последний раз редактировалось Муркиз Ср мар 11, 2026 14:47:24, всего редактировалось 1 раз.
Что тогда мешает скинуться всем коллективом, описать требуемый алгоритм работы устройства и создать соответствующую тему в разделе "Предлагаю работу"? Даже дизассемблировать ничего не нужно. Тем более, что существующая прошивка всё равно толком не работает (по вашим же утверждениям). 4800 строк - не бог весть какой сложности программа. Особенно если это строки асма, а не си.
PS: Ожидать тут экстрасенса, который магическим образом внедрит в ваше сознание понимание работы программы, которую он даже увидеть не может.... Это мягко говоря - странно.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:56:39
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Для этого надо и выяснить что так в программе и как ?
Основная задача извлечение как раз алгоритма работы, которого никто не знает. Есть он там, хороший, плохой, никто не знает. Надо узнать. Новый не разработать, тут уже нет очень серьёзных знаний и экспериментальной базы. Это не "мигалка" и не регулятор температуры с "далласовским" датчиком. Всё сложнее и намного.
Если там нет искомого - то увы, а если есть - то всё хорошо. Тут уже и финансирование появится и программиста "нужного" нанять можно.
Была надежда, что есть какое-то ПО, облегчающее, в том или другом виде, анализ программ.
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 14:58:25, всего редактировалось 1 раз.
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 14:57:11
Друг Кота
Карма: 107
Рейтинг сообщений: 3852
Зарегистрирован: Пн фев 09, 2009 22:19:49 Сообщений: 25630 Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения:0
Да тем, что для решения такой задачи сначала требуется создать сначала функциональную модель, затем для нее нужно сформировать и свести математическую модель и доказать возможность ее существования и достаточности для получения решения, затем уже идёт построение алгоритмической модели просчет ее устойчивости, и только после этого начинается этап перевода ее в программный код, который тоже имеет несколько отнюдь не чисто кодописных задач.
И где вы таких программистов найдете сейчас ? И не простого горбача - тут нужны прикладные программисты - которые в первую очередь должны быть специалистами по реализуемой теме. А таких прикладников-программистов никто вообще не выпускают. Считают, что достаточно математиков-программистов. И на решение прикладных задач их знаний недостаточно.
Ну а попытки извлечь из последовательности действий правил и закономерностей их применения в коде бесполезно - их там нет. Они там преобразованы в форму инструкций действия по ситуации - а это все равно что у каменщика спрашивать, сколько на это здание кирпича пойдет.
Последний раз редактировалось Муркиз Ср мар 11, 2026 16:40:06, всего редактировалось 2 раз(а).
Заголовок сообщения: Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Добавлено: Ср мар 11, 2026 15:00:24
Нашел транзистор. Понюхал.
Карма: -2
Рейтинг сообщений: -5
Зарегистрирован: Ср фев 04, 2026 21:29:19 Сообщений: 188 Откуда: Из норки где-то в России
Рейтинг сообщения:0
Так в том всё и есть, что в 1998-1999 годах задача была решена людьми по умнее нас, нынешних, результатом чего, стало к данное ПО. Исходники были утрачены вместе со стендовым оборудованием. А прошивка сохранилась.
Почему нет то ? Собственно это перенесенный на двоичную арифметику алгоритм.
Есть , конечно, шанс, что задача решена не была, а ПО написано на "отвали". Вроде в те годы люди по честнее были. Ну вот в этом задача и состоит. Разобраться.
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 15:05:28, всего редактировалось 1 раз.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения