Довольно большое "это зависит".
Отображение из исходного кода -> объектный код (математически) не обратимо, поэтому вы не можете восстановить исходный код . Но если у вас есть объектный код, то не так сложно придумать какой-нибудь исходный код, который компилируется в тот же объектный код, или, по крайней мере, имеет тот же эффект - это просто разборка / сборка.
В зависимости от того, насколько креативен ваш процесс декомпиляции, C-код может выглядеть очень похожим на ассемблер. Поэтому я бы поставил под сомнение качество кода, который я, скорее всего, получу от сторонних разработчиков - «код на C» не означает «код на C, который легко поддерживается нашими программистами на C», и его может быть довольно сложно создать. последний.
Также обратите внимание, что встроенный контроллер, «написанный на C», может иметь довольно много ассемблера в своем исходном коде. Так что либо вы разрешаете ассемблер в своей версии с обратной инженерией, либо нет. Если вы этого не сделаете, может быть невозможно воспроизвести функциональность на C. Если вы это сделаете, то где вы проводите черту - в крайнем случае вы можете просто разобрать их исходный код и вообще не иметь никакого надлежащего кода на C. Вы не можете точно определить из изучения объектного кода, какие биты были написаны на C, а какие нет.
Все это, конечно, оставляя в стороне юридические вопросы. Вероятно, неразумно оставлять в стороне юридические вопросы, особенно если учесть, что вы покупаете эту систему как физический объект, и у вас, возможно, нет никаких юридических оснований для отделения кода от аппаратного обеспечения вообще.