2010-05-01 4 views
5

Tutti,Fattibilità del reverse engineering del codice incorporato

La mia azienda si trova nella situazione in cui si utilizza un sistema di controllo incorporato di un'altra società in un altro paese. Non abbiamo il codice sorgente o gli schemi di questo sistema, e il produttore non vuole rilasciarli, apparentemente a qualsiasi prezzo o sotto qualsiasi termine. Siamo quindi bloccati con un giro di 6 mesi per fare anche una piccola modifica, e possono praticamente caricare qualsiasi importo desiderato.

Aspetti legali a parte, sarebbe possibile effettuare il reverse engineering del codice incorporato in C? Esistono società che potrebbero fare questo per noi?

Grazie, Fred

+0

Come sai che è stato scritto in C? –

+0

Un dettaglio importante che hai tralasciato è l'hardware utilizzato. –

+0

Non so che è stato scritto in C e non conosco ancora la CPU, è stata fatta solo la domanda di ieri. La prossima settimana avrò il tempo di smontare una delle macchine e vedere quale CPU e altri chip sta usando. –

risposta

2

Un bel "dipende".

Il mapping da origine -> codice oggetto è (matematicamente parlando) non reversibile, quindi non è possibile ripristinare il codice sorgente. Ma se hai il codice oggetto non è poi così difficile trovare una fonte che compili lo stesso codice oggetto, o almeno che abbia lo stesso effetto - è solo smontaggio/assemblaggio.

A seconda di quanto creativo è il processo di decompilazione, tuttavia, il codice C potrebbe apparire molto simile all'assemblatore. Quindi metterei in discussione la qualità del codice che probabilmente tornerò da una terza parte - "codice C" non significa "codice C che è facilmente gestibile dai nostri programmatori C", e potrebbe essere davvero molto difficile da produrre l'ultimo.

Si noti inoltre che un controller incorporato "scritto in C" potrebbe in realtà avere un numero molto elevato di assembler nel codice sorgente. Quindi o consenti all'assemblatore nella tua versione modificata o non lo fai. Se non lo fai, potrebbe essere impossibile riprodurre la funzionalità in C. Se lo fai, allora dove si disegna la linea - all'estremo si potrebbe semplicemente smontare la loro fonte e non avere alcun codice C corretto. Non si può necessariamente dire dall'esame del codice oggetto quali bit sono stati scritti in C e quali no.

Tutto questo ovviamente lasciando da parte le questioni legali. Probabilmente non è saggio lasciare da parte i problemi legali, soprattutto perché sembra che tu stia acquistando questo sistema come un oggetto fisico, e probabilmente non hai alcuna base legale per separare il codice dall'hardware.

4

Ci sono molte aziende che si ri-attuazione del sistema di controllo incorporato senza reverse engineering quello che si sta utilizzando ora, fino a quando si sa che i requisiti di sistema.

+0

Doug, potresti suggerire un'azienda che potrebbe fare questo? Saremmo interessati a parlare con loro. –

+0

Re-implementare un sistema complesso da zero è piuttosto costoso, richiede molto tempo e spesso fallisce. Ci sono un sacco di aziende che sono felici di prendere i tuoi soldi per fare questo perché costoso significa trasferimento di denaro da te a loro. (Io faccio reingegnerizzazione per vivere, e questa è quasi mai la risposta giusta per il cliente).E questo è un software incorporato: hai intenzione di reimplementare anche l'hardware? –

+0

@ user258526, visitare il sito Web del produttore di un chip, ad esempio http://www.microchip.com, e cercare partner di progettazione. Disclaimer: la mia azienda fa questo tipo di lavoro (contratto di elettronica integrata e sviluppo di software). –

0

Supponendo che si sia in grado di recuperare il codice binario dal sistema, smontare e pettinarlo non dovrebbe essere un problema. In realtà, il codice dell'assemblatore nel codice manutenibile C è un grosso problema. A seconda delle dimensioni del sistema, questo richiederà molto tempo manualmente (ri) la scrittura del codice in qualcosa di utilizzabile.

A mia conoscenza, in alcuni paesi, è legale decodificare un sistema per garantire la compatibilità con il software. Ma questo può richiedere il reverse engineering della camera bianca.

+0

... sì, ma non per cambiare la funzionalità del software, che è ciò che l'OP vuole. –

2

Vedi risposte a reverse engineering c programs

In particolare, vedere la mia risposta fa riferimento a "maiali alle salsicce". La società che sta dietro quel documento può fare un buon lavoro nel convertire l'assemblatore in C, se l'assemblatore in questione non fa cose che non è possibile specificare in C (come "Imposta il registro puntatore stack ...") .

[non ho nulla a che fare con i maiali-to-Salsicce ragazzi, tranne aver incontrato e con un grande rispetto per il loro vantaggio tecnico.]

0

Se siete alla ricerca di aziende per aiutare a decodificare, si potrebbe voler annusare chi pubblica nel Working Conference on Reverse Engineering. Trova un lavoro lì che ti impressiona e chiedi a quelle persone che assumere.

0

Potrebbe essere meglio avviare una squadra incorporata in casa. Allo stesso tempo, dovresti fare 4-5 modifiche al software, con il team giusto potresti avere progettazioni hardware e software completamente proprietarie, oltre a competenze interne che possono implementare rapidamente i cambiamenti.

... per non parlare della quantità di denaro che avresti risparmiato sul markup se il prodotto ha un volume considerevole.