所有
我的公司正处于使用其他国家/地区的其他公司的嵌入式控制系统的情况。我们没有此系统的源代码或原理图,制造商不希望以任何价格或任何条款发布它们。 因此,我们坚持了6个月的转身才能完成一个小的修改,他们基本上可以收取他们想要的任何金额。
除法律方面外,将嵌入式代码反向工程改为C是否可行?是否存在可以为我们做到这一点的公司?
谢谢你, 佛瑞德
答案 0 :(得分:4)
有许多公司会重新实施嵌入式控制系统而无需对您现在使用的系统进行逆向工程,只要您了解系统的要求即可。
答案 1 :(得分:2)
相当大的“它取决于”。
来自源的映射 - >目标代码(在数学上讲)是不可逆的,因此您无法恢复 源代码。但是如果你有目标代码,那么编译同一个目标代码的某种源代码并不是那么难,或者至少具有相同的效果 - 这只是反汇编/汇编。
根据反编译过程的创新程度,C代码可能看起来很像汇编程序。所以我会质疑我可能从第三方获得的代码质量 - “C代码”并不意味着“我们的C程序员可以轻松维护的C代码”,而且可能真的很难生成后者。
另请注意,“用C语言编写”的嵌入式控制器实际上可能在其源代码中包含了相当多的汇编程序。所以要么你允许在反向工程版本中使用汇编程序,要么你不允许。如果不这样做,可能无法在C中重现功能。如果你这样做,那么你在哪里绘制线 - 在极端情况下你可以反汇编它们的源代码而根本没有任何合适的C代码。您无法通过检查目标代码来判断哪些位是用C编写的,哪些不是。
所有这一切当然都不考虑法律问题。抛弃法律问题可能是不明智的,特别是因为您似乎将这个系统作为物理对象购买,并且您可能根本没有法律依据将代码与硬件分开。
答案 2 :(得分:2)
查看reverse engineering c programs
的答案特别是,请参阅我的答案,引用“猪到香肠”。该文件背后的公司可以很好地将汇编程序转换回C,如果有问题的汇编程序没有做你不能在C中说明的事情(例如,“设置堆栈指针寄存器......”)
[我与Pigs-to-Sausages家伙没有任何关系,除非他们遇到并非常尊重他们的技术领导。]
答案 3 :(得分:0)
假设您能够从系统中检索二进制代码,则通过它进行反汇编和梳理应该没有问题。实际上将汇编代码转换为可维护的 C代码是一个很大的问题。根据系统的大小,这将花费大量时间手动(重新)将代码写入可用的东西。
据我所知,在某些国家/地区,对系统进行反向工程以确保与您的软件兼容是合法的。但这可能需要洁净室逆向工程。
答案 4 :(得分:0)
如果您正在寻找帮助逆向工程的公司,您可能想要嗅探Working Conference on Reverse Engineering中发布的人。在那里找一些令你印象深刻的工作,并问那些雇用的人。
答案 5 :(得分:0)
你可能最好在内部开设嵌入式团队。同时,它会让您进行4-5次软件更改,合适的团队可以拥有完全拥有的硬件和软件设计,以及可以快速实施变更的内部专业知识。
...更不用说如果产品有相当大的数量,你会在标记上节省的金额。