Все,
Моя компания находится в ситуации, где мы используем встроенную систему управления от другой компании в другой стране. У нас нет исходного кода или схематики к этой системе, и производитель не хочет выпускать их, по-видимому по любой цене или в соответствии с любыми условиями. Мы таким образом застреваем с 6-месячным поворотом вокруг для получения даже маленькой модификации, сделанной, и они могут в основном заряжать любую сумму, которую они хотят.
Легальные аспекты в стороне, было бы вообще выполнимо перепроектировать встроенный код назад в C? Какие-либо компании существуют, который мог сделать это для нас?
Спасибо, Fred
Довольно большое «это зависит от обстоятельств».
Отображение исходного кода в объектный код (математически говоря) необратимо, поэтому вы не можете восстановить исходный код . Но если у вас есть объектный код, не так уж и сложно придумать какой-то источник, который компилируется в тот же объектный код или, по крайней мере, имеет такой же эффект - это просто разборка / сборка.
Тем не менее, в зависимости от того, насколько креативен ваш процесс декомпиляции, код C может получиться очень похожим на ассемблер. Поэтому я бы поставил под сомнение качество кода, который я, скорее всего, получил бы от стороннего поставщика - «код C» не означает «код C, который легко поддерживать нашим программистам на C», и его действительно может быть довольно сложно создать последний.
Также обратите внимание, что встроенный контроллер, «написанный на C», на самом деле может иметь довольно много ассемблера в своем исходном коде. Так что либо вы разрешаете ассемблер в вашей реверсивной версии, либо нет. Если вы этого не сделаете, возможно, будет невозможно воспроизвести функциональность в C. Если вы это сделаете, то где вы проведете черту - в крайнем случае, вы можете просто дизассемблировать их исходный код и вообще не иметь никакого надлежащего кода C. Изучая объектный код, вы не всегда можете сказать, какие биты были написаны на C, а какие нет.
Все это, конечно, не считая юридических вопросов. Вероятно, неразумно оставлять в стороне юридические вопросы, тем более что кажется, что вы покупаете эту систему как физический объект, и у вас, возможно, нет никаких юридических оснований для отделения кода от оборудования.
Есть множество компаний, которые повторно внедряют встроенную систему управления без обратного проектирования той, которую вы используете сейчас, при условии, что вы знаете требования к этой системе. .
Если вы ищете компании для помощи в реверс-инжиниринге, вы можете поинтересоваться, кто публикуется в Working Conference on Reverse Engineering. Найдите там работы, которые произведут на вас впечатление, и спросите этих людей, кого нанять.
Предполагая, что вы можете извлечь двоичный код из системы, его дизассемблирование и прочесывание не должно быть проблемой. На самом деле превращение кода ассемблера в поддерживаемый код C представляет собой большую проблему. В зависимости от размера системы это займет много времени, вручную (пере) переписав код во что-то пригодное для использования.
Насколько мне известно, в некоторых странах законно реконструировать систему, чтобы обеспечить совместимость с вашим программным обеспечением. Но для этого может потребоваться реверс-инжиниринг в чистой комнате.
Возможно, вам лучше создать встроенную команду самостоятельно. . В то же время вам потребовалось бы внести 4-5 изменений в программное обеспечение, с правильной командой вы могли бы полностью владеть проектами аппаратного и программного обеспечения, а также иметь собственный опыт, который может быстро внедрить изменения.
... не говоря уже о сумме денег, которую вы сэкономите на наценке, если товар будет иметь значительный объем.
См. Ответы на программы обратного проектирования c
В частности, см. Мой ответ со ссылкой на «Свиньи в сосиски». Компания, написавшая этот документ, может неплохо преобразовать ассемблер обратно в C, если рассматриваемый ассемблер не выполняет того, что вы не можете указать на C (например, «Установить регистр указателя стека ...») .
[Я не имею ничего общего с ребятами из Pigs-to-Sausages, за исключением того, что я встречался и очень уважаю их техническое руководство.]
{ {1}}