繁体   English   中英

一些嵌入式代码的逆向工程的可行性

[英]Feasability of reverse engineering some embedded code

所有,

我公司正处于使用其他国家其他公司的嵌入式控制系统的情况。 我们没有此系统的源代码或原理图,制造商不希望以任何价格或任何条款发布它们。 因此,我们坚持了6个月的转身以完成一个小的修改,他们基本上可以收取任何他们想要的金额。

除法律方面之外,将嵌入式代码反向工程改为C是否完全可行? 是否存在可以为我们做到这一点的公司?

谢谢你,弗雷德

只要您了解系统的要求,就有很多公司会重新实施嵌入式控制系统而无需对您现在使用的系统进行逆向工程。

相当大的“它取决于”。

从源映射- >目标代码(从数学上讲)不可逆的,所以不能恢复源代码。 但是如果你有目标代码,那么编译同一个目标代码的某种源代码并不是那么难,或者至少具有相同的效果 - 这只是反汇编/汇编。

但是,根据反编译过程的创造性,C代码可能看起来很像汇编程序。 所以我会质疑我可能从第三方获得的代码质量 - “C代码”并不意味着“我们的C程序员可以轻松维护的C代码”,而且可能真的很难生成后者。

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

所有这一切当然都抛弃了法律问题。 抛开法律问题可能是不明智的,特别是因为您似乎将此系统作为物理对象购买,并且您可能没有法律依据将代码与硬件分开。

查看逆向工程c程序的答案

特别是,请参阅我的回答“猪到香肠”。 该文件背后的公司可以很好地将汇编程序转换回C,如果有问题的汇编程序没有做你不能在C中说明的事情(例如,“设置堆栈指针寄存器......”) 。

[我与Pigs-to-Sausages家伙没有任何关系,除非他们遇到并非常尊重他们的技术领导。]

假设您能够从系统中检索二进制代码,则反汇编和梳理它应该没有问题。 实际上将汇编代码转换为可维护的 C代码是一个很大的问题。 根据系统的大小,这将花费大量时间手动(重新)将代码写入可用的东西。

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

如果您正在寻找可以帮助逆向工程的公司,您可能想要了解在逆向工程工作会议上发布的人员 在那里找一些令你印象深刻的工作,并问那些雇用​​的人。

你可能最好在内部创建一个嵌入式团队。 与此同时,它可以让您进行4-5次软件更改,拥有合适的团队,您可以拥有完全拥有的硬件和软件设计,以及可以快速实施变更的内部专业知识。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM