ПО облегчающее реверс инженеринг прошивок ОМК.
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
ПО облегчающее реверс инженеринг прошивок ОМК.
Вот тут давнишняя задача - есть некоторое ПО для некоторого устройства использующего Microchip PIC16C65А. Прошивка дизассемблирована (ровно 4800 значащих строк) и корректно ассемблируется в исходный файл. Но при этом ПО не работает нормально и корректно на реальном железе. Есть нюанс, проверка проводилась на PIC16F877, но ничего такого, что есть в 16С65 и отсутствует в 16F877 не замечено (судя по найденным обращениям к регистрам ввода вывода из аппаратной переферии используются только таймеры-счетчики и система прерываний). Регистры из используемых 1:1.
Есть первое предположения, что в "открытую" версию внесена некоторые "опечатки".
Или всё таки влияют некоторые различия 16С65 и 16F877 ?
Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных ОМК. Сам я не программист, да и другие люди к проекту близкие тоже и тяжело разбираться в алгоритмах. Вот как бы можно раздербанить программу на какие-то более понятные виды изображения. Квадратики-стрелочки или еще как-то ?
Из-за большой и крайне сложной периферии сымитировать работу ПО в симуляторах невозможно. Судя по годам создания, написано было на ассемблере, но понять по коду, ассемблер это или компилятор с языка высокого уровня, я увы не могу.
Само ПО или его части публиковаться, к сожалению, не будут.
Есть первое предположения, что в "открытую" версию внесена некоторые "опечатки".
Или всё таки влияют некоторые различия 16С65 и 16F877 ?
Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных ОМК. Сам я не программист, да и другие люди к проекту близкие тоже и тяжело разбираться в алгоритмах. Вот как бы можно раздербанить программу на какие-то более понятные виды изображения. Квадратики-стрелочки или еще как-то ?
Из-за большой и крайне сложной периферии сымитировать работу ПО в симуляторах невозможно. Судя по годам создания, написано было на ассемблере, но понять по коду, ассемблер это или компилятор с языка высокого уровня, я увы не могу.
Само ПО или его части публиковаться, к сожалению, не будут.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Одни проблемы. Со всех сторон.)
Ну и непонятно. ПО на оригинальном 65 работает как надо? А не работает только на клоне 877?
Просто людей нужно заинтересовать и они всё сделают.)
Ну и непонятно. ПО на оригинальном 65 работает как надо? А не работает только на клоне 877?
Просто людей нужно заинтересовать и они всё сделают.)
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Неизвестно. Задача использовать PIC16F877 вместо PIC16C65A стояла с самого начала, поэтому с PIC16C65A проверка не проводилась. На данный момент провести её сложно, хотя и возможно. ПО работало, но "не совсем корректно". В смысле что процессор не зависал, но и нормальной работы согласно документации достигнуть не удалось.
Именно для этого я и ищу ПО, в ручную пытаться "размотать" не получилось. "Безобразно Бешеных Бабок" для нанятия людей "со стороны" не подвезли.
Именно для этого я и ищу ПО, в ручную пытаться "размотать" не получилось. "Безобразно Бешеных Бабок" для нанятия людей "со стороны" не подвезли.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
А в PROTEUS-е погонять? Там модель того PIC16C65A есть?
I have a dream...¯\_(ツ)_/¯
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
А почитать сообщение по внимательнее ? Там написано ! (для ленящихся читать уточню: "для работы нужна переферия, которая достаточно сложна и имеет не только электрические, но и механические и гидравлические компоненты" ни один симулятор, из известных мне, на такое не способен).
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 13:43:13, всего редактировалось 1 раз.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Для старых ПИК-ов вполне хватает обычного дизассемблера. Если не умеете - учитесь.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Всё дизассемблировано давно. Выделены все подпрограммы и зафиксированы все точки входа и выхода в них. Но этого мало - восстановить алгоримы не получается. Нужно ПО , если таковое существует, которое облегчает разбор ассемблерного текста.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Никакое ПО не обеспечивает учёта всех особенностей работы внешней периферии.
Эту задачу можно решить только симуляция по алгоритму работы конечного изделия, в котором тот МК с программой используется.
Или садиться в позу ёги заниматься медитационными размышлениями.

Касательно разбора ассемблерного текста...
Листочки бумаги, машинные коды и их "перевод" в мнемоники ассемблера, затем карандаши в лапки и анализ переходов... Далее смотрим чего нарылось...
Такое относительно легко для I8080/85, Z80 и MCS51, у ПИКовых заметно помуторнее перевод из кода в мнемонику.
Но вдруг у кого получится...

Эту задачу можно решить только симуляция по алгоритму работы конечного изделия, в котором тот МК с программой используется.
Или садиться в позу ёги заниматься медитационными размышлениями.
Касательно разбора ассемблерного текста...
Листочки бумаги, машинные коды и их "перевод" в мнемоники ассемблера, затем карандаши в лапки и анализ переходов... Далее смотрим чего нарылось...
Такое относительно легко для I8080/85, Z80 и MCS51, у ПИКовых заметно помуторнее перевод из кода в мнемонику.
Но вдруг у кого получится...
Последний раз редактировалось BOB51 Ср мар 11, 2026 14:05:39, всего редактировалось 2 раза.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Тем более.Всё дизассемблировано давно.
Если есть куски кода, то только знание работы этого МК даст вам возможность заставить работать эти куски на 877.
Также, всю "лишнюю" периферию, что есть в 877, но отсутствует в 65, крайне желательно принудительно отключать при инициализации МК.
Вполне возможно (точно не скажу) что даже отдельные биты в конфиге МК у них имеют разное значение.
Вы хоть это сделали ?
Есть (очень малая) вероятность того, что объяснить, как работает и что делает тот или иной кусок, вам поможет какое-нибудь ИИ-чудо.
Но это такое... почти как эмуляция симуляции трехпрограммника...
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Так ТС и его окружение ни бе, ни ме в программировании. И он ищет волшебную пилюлю в в виде непонятно чего, но что бы у него работало как ему хочется. ППЦ, конечно.
- Муркиз
- Друг Кота
- Сообщения: 25758
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
А они( алгоритмы) в этом коде вообще-то есть ?Задача стоит или найти "опечатку" и устранить, или извлечь из кода алгоритмы работы и передать людям для написания ПО на современных
Или это программа из тех, что описана для отхватить бабок от лохов и смыться ? Раз там одни обращение к таймерам.
Развелось тут ловкачей, которые готовят получить реализацию своих проектов под девизом " тестовых заданий для определения квалификации".
И кто кого в итоге обует ?
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму - что из чего получается. Какая ячейка памяти связана с какими событиями, какие математические операции выполняются над переменными. В общем любое ПО которое облегчает ковыряние в исходниках другого ПО.
Симуляция работы конечного изделия в полной форме очень сложна, даже непонятно на чем симулировать. Это не мигалка светодиодами и даже не экскаватор, всё намного сложнее. Поэтому задача размотать исходный алгоритм работы и представить его в виде по которому можно будет заказать написание нового ПО под новый микроконтролёр и модернизированную переферию. В "старой" перефирии используется немало снятых с производства, хотя еще и относительно доступных микросхем. Да и сам PIC16C65A вроде как снят с производства да и PIC18F877 тоже не "новый" и может довольно быстро исчезнуть.
Симуляция работы конечного изделия в полной форме очень сложна, даже непонятно на чем симулировать. Это не мигалка светодиодами и даже не экскаватор, всё намного сложнее. Поэтому задача размотать исходный алгоритм работы и представить его в виде по которому можно будет заказать написание нового ПО под новый микроконтролёр и модернизированную переферию. В "старой" перефирии используется немало снятых с производства, хотя еще и относительно доступных микросхем. Да и сам PIC16C65A вроде как снят с производства да и PIC18F877 тоже не "новый" и может довольно быстро исчезнуть.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
[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]Такое ПО существует и находится оно в мозгу программиста.
Всё равно что если бы вам дали листок с набором закорючек и сказали, что это текст на суахили. Как вы можете быть в этом уверены, если ни черта не понимаете в суахили?
Ваши "подпрограммы" может быть - просто наборы мусора. Потому как дизассемблер принял данные за код, а код - за данные. "Непрограммист" этого не заметит.
[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]Такое ПО существует и находится оно в мозгу программиста.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Это всё лоховство и недомыслие, навязываемые вам разными ИИшечками. Без обид.Есть надежда на какое либо преобразование ассемблерного текста в некую алгоритмически понятную форму
Сейчас глянул их даташиты.
У 65-го РОНы начинаются с адреса 0x0С, а у 877 - с 0x20.
Давайте, скажите мне, что и это уже скорректировано и всё равно нихрена не получается
да, сорри, смотрел для 61
Последний раз редактировалось abc Ср мар 11, 2026 14:31:14, всего редактировалось 1 раз.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Насколько удалось установить, обращение идёт только к портам ввода/вывода к таймеру и задействованы прерывания.
Обращения к регистрам SPI, UART, АЦП и сторожевого таймера не найдено. Или искать не умеем правильно.
Один из таймеров используется в фиксированном режиме для вызова прерывания, два других не очень понятно как, но постоянно переконфигурируются.
ПО было написано в 1998-1999 году.
Добавлено after 3 minutes 29 seconds:
Одинаковые адреса там с 20h у обоих первая страница РОНов, а вторая с A0h. Вы что-то не там смотрите.
У PIC16F877 просто 4 набора, а у PIC16C65A - два. Так старшие просто не используются.
Все адреса и управляющие биты были проверены. Тут вопросов нет. Или какие то нюансы или всё таки что-то с программой не то.
Во первых я не один работаю над этим. Во вторых программистом считаю человека, создающего программы, а не понимающего, что на бумажке написаны не каракули. Ассемблер Microchip, немного знаю, книжки соответствующие читал, а не просто так. Естественно тут просто уровня опыта и знаний недостаточно для понимания, что происходит в программе в общем, а не того, что "из ячейки с адресом ХХ переписано в порт с такой то переферии".
Составлялись, сначала списки всех вызовов подпрограмм CALL (АДР.) Выявлялись точки входа. Предполагая, что каждая подпрограмма может иметь ни одну точку входа, примерно группировались зоны вызовов. В этих зонах велся поиск команд "RET" для начала в сторону больших адресов, а так-же команд безусловного и условного перехода на адреса младше адреса входа. Ну собственнотвсё - находился участок памяти обособленный из которого наружу нет ни одного перехода, а внутри есть как минимум одна команда RET и в который ведут один или более CALL. Использовался Microsoft EXEL.
Обращения к регистрам 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 раз.
- Муркиз
- Друг Кота
- Сообщения: 25758
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
На каком основании вы уверены, что "алгоритмы" старого ПО будут годны для использовании на новом оборудовании ?
Кстати, такая ошибка является основной для всех доморощенных разработчиков разряда "достаточно знать несколько операторов и систему регистров". Поэтому у них в итоге и ничего не работает.
Кстати, такая ошибка является основной для всех доморощенных разработчиков разряда "достаточно знать несколько операторов и систему регистров". Поэтому у них в итоге и ничего не работает.
Последний раз редактировалось Муркиз Ср мар 11, 2026 14:47:24, всего редактировалось 1 раз.
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
[uquote="Призрачный Суслик",url="/forum/viewtopic.php?p=4796640#p4796640"]Во первых я не один работаю над этим.[/uquote]Что тогда мешает скинуться всем коллективом, описать требуемый алгоритм работы устройства и создать соответствующую тему в разделе "Предлагаю работу"?
Даже дизассемблировать ничего не нужно. Тем более, что существующая прошивка всё равно толком не работает (по вашим же утверждениям).
4800 строк - не бог весть какой сложности программа. Особенно если это строки асма, а не си.
PS: Ожидать тут экстрасенса, который магическим образом внедрит в ваше сознание понимание работы программы, которую он даже увидеть не может.... Это мягко говоря - странно.
Даже дизассемблировать ничего не нужно. Тем более, что существующая прошивка всё равно толком не работает (по вашим же утверждениям).
4800 строк - не бог весть какой сложности программа. Особенно если это строки асма, а не си.
PS: Ожидать тут экстрасенса, который магическим образом внедрит в ваше сознание понимание работы программы, которую он даже увидеть не может.... Это мягко говоря - странно.
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Для этого надо и выяснить что так в программе и как ?
Основная задача извлечение как раз алгоритма работы, которого никто не знает. Есть он там, хороший, плохой, никто не знает. Надо узнать. Новый не разработать, тут уже нет очень серьёзных знаний и экспериментальной базы. Это не "мигалка" и не регулятор температуры с "далласовским" датчиком. Всё сложнее и намного.
Если там нет искомого - то увы, а если есть - то всё хорошо. Тут уже и финансирование появится и программиста "нужного" нанять можно.
Была надежда, что есть какое-то ПО, облегчающее, в том или другом виде, анализ программ.
Основная задача извлечение как раз алгоритма работы, которого никто не знает. Есть он там, хороший, плохой, никто не знает. Надо узнать. Новый не разработать, тут уже нет очень серьёзных знаний и экспериментальной базы. Это не "мигалка" и не регулятор температуры с "далласовским" датчиком. Всё сложнее и намного.
Если там нет искомого - то увы, а если есть - то всё хорошо. Тут уже и финансирование появится и программиста "нужного" нанять можно.
Была надежда, что есть какое-то ПО, облегчающее, в том или другом виде, анализ программ.
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 14:58:25, всего редактировалось 1 раз.
- Муркиз
- Друг Кота
- Сообщения: 25758
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Да тем, что для решения такой задачи сначала требуется создать сначала функциональную модель, затем для нее нужно сформировать и свести математическую модель и доказать возможность ее существования и достаточности для получения решения, затем уже идёт построение алгоритмической модели просчет ее устойчивости, и только после этого начинается этап перевода ее в программный код, который тоже имеет несколько отнюдь не чисто кодописных задач.
И где вы таких программистов найдете сейчас ? И не простого горбача - тут нужны прикладные программисты - которые в первую очередь должны быть специалистами по реализуемой теме. А таких прикладников-программистов никто вообще не выпускают. Считают, что достаточно математиков-программистов. И на решение прикладных задач их знаний недостаточно.
Ну а попытки извлечь из последовательности действий правил и закономерностей их применения в коде бесполезно - их там нет. Они там преобразованы в форму инструкций действия по ситуации - а это все равно что у каменщика спрашивать, сколько на это здание кирпича пойдет.
И где вы таких программистов найдете сейчас ? И не простого горбача - тут нужны прикладные программисты - которые в первую очередь должны быть специалистами по реализуемой теме. А таких прикладников-программистов никто вообще не выпускают. Считают, что достаточно математиков-программистов. И на решение прикладных задач их знаний недостаточно.
Ну а попытки извлечь из последовательности действий правил и закономерностей их применения в коде бесполезно - их там нет. Они там преобразованы в форму инструкций действия по ситуации - а это все равно что у каменщика спрашивать, сколько на это здание кирпича пойдет.
Последний раз редактировалось Муркиз Ср мар 11, 2026 16:40:06, всего редактировалось 2 раза.
-
Призрачный Суслик
- Прорезались зубы
- Сообщения: 214
- Зарегистрирован: Ср фев 04, 2026 21:29:19
- Откуда: Из норки где-то в России
Re: ПО облегчающее реверс инженеринг прошивок ОМК.
Так в том всё и есть, что в 1998-1999 годах задача была решена людьми по умнее нас, нынешних, результатом чего, стало к данное ПО. Исходники были утрачены вместе со стендовым оборудованием. А прошивка сохранилась.
Почему нет то ? Собственно это перенесенный на двоичную арифметику алгоритм.
Есть , конечно, шанс, что задача решена не была, а ПО написано на "отвали". Вроде в те годы люди по честнее были. Ну вот в этом задача и состоит. Разобраться.
Почему нет то ? Собственно это перенесенный на двоичную арифметику алгоритм.
Есть , конечно, шанс, что задача решена не была, а ПО написано на "отвали". Вроде в те годы люди по честнее были. Ну вот в этом задача и состоит. Разобраться.
Последний раз редактировалось Призрачный Суслик Ср мар 11, 2026 15:05:28, всего редактировалось 1 раз.