Осуществимость инженерного анализа некоторого встроенного кода

Все,

Моя компания находится в ситуации, где мы используем встроенную систему управления от другой компании в другой стране. У нас нет исходного кода или схематики к этой системе, и производитель не хочет выпускать их, по-видимому по любой цене или в соответствии с любыми условиями. Мы таким образом застреваем с 6-месячным поворотом вокруг для получения даже маленькой модификации, сделанной, и они могут в основном заряжать любую сумму, которую они хотят.

Легальные аспекты в стороне, было бы вообще выполнимо перепроектировать встроенный код назад в C? Какие-либо компании существуют, который мог сделать это для нас?

Спасибо, Fred

5
задан ire_and_curses 1 May 2010 в 16:47
поделиться

6 ответов

Довольно большое «это зависит от обстоятельств».

Отображение исходного кода в объектный код (математически говоря) необратимо, поэтому вы не можете восстановить исходный код . Но если у вас есть объектный код, не так уж и сложно придумать какой-то источник, который компилируется в тот же объектный код или, по крайней мере, имеет такой же эффект - это просто разборка / сборка.

Тем не менее, в зависимости от того, насколько креативен ваш процесс декомпиляции, код C может получиться очень похожим на ассемблер. Поэтому я бы поставил под сомнение качество кода, который я, скорее всего, получил бы от стороннего поставщика - «код C» не означает «код C, который легко поддерживать нашим программистам на C», и его действительно может быть довольно сложно создать последний.

Также обратите внимание, что встроенный контроллер, «написанный на C», на самом деле может иметь довольно много ассемблера в своем исходном коде. Так что либо вы разрешаете ассемблер в вашей реверсивной версии, либо нет. Если вы этого не сделаете, возможно, будет невозможно воспроизвести функциональность в C. Если вы это сделаете, то где вы проведете черту - в крайнем случае, вы можете просто дизассемблировать их исходный код и вообще не иметь никакого надлежащего кода C. Изучая объектный код, вы не всегда можете сказать, какие биты были написаны на C, а какие нет.

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

2
ответ дан 14 December 2019 в 04:32
поделиться

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

4
ответ дан 14 December 2019 в 04:32
поделиться

Если вы ищете компании для помощи в реверс-инжиниринге, вы можете поинтересоваться, кто публикуется в Working Conference on Reverse Engineering. Найдите там работы, которые произведут на вас впечатление, и спросите этих людей, кого нанять.

0
ответ дан 14 December 2019 в 04:32
поделиться

Предполагая, что вы можете извлечь двоичный код из системы, его дизассемблирование и прочесывание не должно быть проблемой. На самом деле превращение кода ассемблера в поддерживаемый код C представляет собой большую проблему. В зависимости от размера системы это займет много времени, вручную (пере) переписав код во что-то пригодное для использования.

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

0
ответ дан 14 December 2019 в 04:32
поделиться

Возможно, вам лучше создать встроенную команду самостоятельно. . В то же время вам потребовалось бы внести 4-5 изменений в программное обеспечение, с правильной командой вы могли бы полностью владеть проектами аппаратного и программного обеспечения, а также иметь собственный опыт, который может быстро внедрить изменения.

... не говоря уже о сумме денег, которую вы сэкономите на наценке, если товар будет иметь значительный объем.

0
ответ дан 14 December 2019 в 04:32
поделиться

См. Ответы на программы обратного проектирования c

В частности, см. Мой ответ со ссылкой на «Свиньи в сосиски». Компания, написавшая этот документ, может неплохо преобразовать ассемблер обратно в C, если рассматриваемый ассемблер не выполняет того, что вы не можете указать на C (например, «Установить регистр указателя стека ...») .

[Я не имею ничего общего с ребятами из Pigs-to-Sausages, за исключением того, что я встречался и очень уважаю их техническое руководство.]

{ {1}}
2
ответ дан 14 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: