2010-05-01 14 views
5

Todo,Factibilidad de la ingeniería inversa algún código incrustado

Mi empresa se encuentra en la situación en la que estamos utilizando un sistema de control integrado de otra compañía en otro país. No tenemos el código fuente o los esquemas de este sistema, y ​​el fabricante no desea liberarlos, aparentemente a cualquier precio o bajo cualquier término. Estamos así atrapados con un cambio de 6 meses para realizar incluso una pequeña modificación, y básicamente pueden cobrar cualquier cantidad que deseen.

Aparte de los aspectos legales, ¿sería factible realizar una ingeniería inversa del código incrustado en C? ¿Existen compañías que puedan hacer esto por nosotros?

Gracias, Fred

+0

¿Cómo sabes que estaba escrito en C? –

+0

Un detalle importante que omitió es qué hardware está usando. –

+0

No sé si estaba escrito en C y todavía no conozco la CPU, solo me hicieron la pregunta ayer. La próxima semana tendré tiempo para desmontar una de las máquinas y ver qué CPU y otros chips está usando. –

Respuesta

2

Bastante grande "depende".

El mapeo desde el código fuente -> objeto no es (matemáticamente hablando) reversible, por lo que no puede recuperar el código fuente. Pero si tiene el código de objeto, no es tan difícil encontrar algún tipo de fuente que se compile con el mismo código de objeto, o al menos que tenga el mismo efecto: eso es solo desmontaje/ensamblaje.

Dependiendo de cuán creativo sea su proceso de descompilación, sin embargo, el código C podría parecerse mucho al ensamblador. Así que cuestionaría la calidad del código que probablemente recibiría de un tercero: "código C" no significa "código C que nuestros programadores C puedan mantener fácilmente", y podría ser realmente bastante difícil de producir. el último.

También tenga en cuenta que un controlador incrustado "escrito en C" podría tener bastante ensamblador en su código fuente. Entonces, o permite ensamblador en su versión de ingeniería inversa o no. Si no lo hace, puede ser imposible reproducir la funcionalidad en C. Si lo hace, ¿dónde dibujará la línea? En el extremo, podría desensamblar su fuente y no tener ningún código C adecuado. No se puede decir necesariamente, al examinar el código objeto, qué bits se escribieron en C y cuáles no.

Todo esto, por supuesto, dejando de lado las cuestiones legales. Probablemente no sea prudente dejar de lado los problemas legales, especialmente porque parece que estás comprando este sistema como un objeto físico, y posiblemente no tengas ninguna base legal para separar el código del hardware en absoluto.

4

Hay un montón de empresas que van a volver a poner en práctica el sistema de control embebido sin la ingeniería inversa de la que usted está usando ahora, como siempre que se sepa que los requisitos del sistema.

+0

Doug, ¿podría sugerir una empresa que podría hacer esto? Estaríamos interesados ​​en hablar con ellos. –

+0

La reimplementación de un sistema complejo desde cero es bastante costosa, lleva mucho tiempo y a menudo falla. Hay muchas compañías que están felices de tomar su dinero para hacer esto porque caro significa transferir dinero de usted a ellos. (Hago reingeniería para ganarme la vida, y esta casi nunca es la respuesta correcta para el cliente).Y este es un software integrado: ¿vas a volver a implementar el hardware también? –

+0

@ user258526, visite el sitio web del fabricante de chips, como http://www.microchip.com, y busque socios de diseño. Descargo de responsabilidad: mi empresa realiza este tipo de trabajo (contratación electrónica integrada y desarrollo de software). –

0

Suponiendo que puede recuperar el código binario del sistema, desensamblarlo y peinarlo no debería ser un problema. En realidad, convertir el código de ensamblador en que se puede mantener El código C representa un gran problema. Dependiendo del tamaño del sistema, tomará mucho tiempo manualmente (re) escribir el código en algo utilizable.

Que yo sepa, en algunos países, es legal realizar una ingeniería inversa de un sistema para garantizar la compatibilidad con su software. Pero esto puede requerir ingeniería inversa en salas limpias.

+0

... sí, pero no para cambiar la funcionalidad del software, que es lo que quiere el OP. –

2

Ver respuestas a reverse engineering c programs

En particular, ver mi respuesta "hace referencia a los cerdos a los Embutidos". La empresa detrás de ese papel puede hacer un buen trabajo al convertir el ensamblador de nuevo a C, si el ensamblador en cuestión no hace cosas que no puede indicar en C (como, "Configurar el registro del puntero de pila ...") .

[no tengo nada que ver con los cerdos-a-Embutidos chicos excepto congregada y tener un gran respeto por su ventaja técnica.]

0

Si está buscando empresas para ayudar a realizar ingeniería inversa, se podría querer husmear quién publica en el Working Conference on Reverse Engineering. Encuentra un trabajo allí que te impresione y pregúntale a las personas a quién contratar.

0

Puede que sea mejor comenzar un equipo integrado en casa. Al mismo tiempo, te llevaría a hacer 4-5 cambios de software, con el equipo adecuado podrías tener diseños de hardware y software completamente propios, además de experiencia interna que puede implementar cambios rápidamente.

... sin mencionar la cantidad de dinero que ahorraría en el marcado si el producto tiene un volumen considerable.

Cuestiones relacionadas