2010-05-01 50 views
5

全部,逆向工程的某些可嵌入代码的可行性

我的公司处于我们正在使用来自另一个国家的另一家公司的嵌入式控制系统的情况。我们没有此系统的源代码或原理图,制造商也不希望以任何价格或任何条款发布它们。 因此,我们坚持6个月左右的转变,即使做了一些小的修改,他们基本上可以收取他们想要的任何金额。除法律方面外,是否可以将嵌入式代码逆向工程转换回C?有没有公​​司可以为我们做这件事?

谢谢 弗雷德

+0

你怎么知道它是用C编写的? – 2010-05-01 16:47:25

+0

您忽略的一个重要细节是它使用的硬件。 – 2010-05-01 17:05:55

+0

不知道它是用C编写的,还不知道CPU,昨天才被问到这个问题。下周我会有时间拆解其中一台机器,看看它使用的CPU和其他芯片。 – 2010-05-01 17:10:17

回答

2

相当大的“它取决于”。

从源代码到目标代码的映射(在数学上讲)是不可逆的,因此您无法恢复源代码。但是,如果你有目标代码,想出一些编译成相同目标代码的源代码,或者至少具有相同的效果 - 这只是反汇编/汇编,并不难。

尽管取决于您的反编译过程的创造性,但C代码看起来很像汇编器。所以我会质疑我可能从第三方获得的代码的质量 - “C代码”并不意味着“我们的C程序员很容易维护的C代码”,并且可能真的很难生成后者。

另请注意,“用C语言编写的”嵌入式控制器实际上可能在其源代码中有相当多的汇编程序。所以要么你允许在你的反向工程版本中使用汇编程序,要么你不需要。如果你不这样做,可能不可能在C中重现功能。如果你这样做,那么你在哪里画线 - 极端情况下,你可以反汇编它们的源代码,并且根本没有任何适当的C代码。你不一定能通过检查目标代码来判断哪些位是用C编写的,哪些不是。

所有这些当然不谈法律问题。将法律问题搁置一边可能是不明智的,尤其是因为它似乎是将此系统作为物理对象购买的,而且您可能没有法律依据将代码与硬件分开。

4

有很多,这将重新实现了嵌入式控制系统,无反向工程您现在正在使用的一个,只要你知道,系统的需求的公司。

+0

Doug,你能否建议一家能够做到这一点的公司?我们有兴趣与他们交谈。 – 2010-05-01 17:11:31

+0

从零开始重新实现一个复杂的系统非常昂贵,需要很长时间,并且往往会失败。有很多公司乐意花钱来做这件事,因为昂贵的手段意味着将现金转移给他们。 (我为了生存而重新设计,这对于客户来说几乎不是正确的答案)。这是嵌入式软件:您是否要重新实现硬件? – 2010-05-01 17:32:04

+0

@ user258526,请访问芯片制造商的网站,例如http://www.microchip.com,寻找设计合作伙伴。免责声明:我的公司做这种工作(合同嵌入式电子和软件开发)。 – 2010-05-01 18:07:21

0

假设您能够从系统中检索二进制代码,则拆解并梳理它应该不成问题。实际上将汇编代码转换为可维护 C代码带来了一个大问题。根据系统的大小,手动(重新)将代码写入可用的代码需要很长时间。

据我所知,在某些国家,对系统进行反向工程以确保与软件的兼容性是合法的。但是这可能需要洁净室的逆向工程。

+0

...是的,但不能改变软件的功能,这是OP想要的功能。 – 2010-05-01 18:02:41

2

见答案reverse engineering c programs

尤其是看到我的回答引用“猪香肠”。如果有问题的汇编程序没有做你不能在C中声明的东西(比如“设置堆栈指针寄存器...”),那么该文件背后的公司可以很好地将汇编程序转换回C语言。 。

[我什么都没有做的猪到香肠的家伙,除了已经举行会议,为他们的技术负责人的尊重很大。]

0

如果您正在寻找公司,以帮助逆向工程师,你可能想要嗅探在Working Conference on Reverse Engineering中发布的人。找到那些令你印象深刻的工作,并询问那些雇用​​的人。

0

你可能会更好地开始一个嵌入式团队。与此同时,它会让您做4-5次软件更改,拥有完全拥有的硬件和软件设计的正确团队,以及可以快速实施更改的内部专业知识。

...更不用说如果产品具有相当大的数量,您在标记上节省的金额。