代码之家  ›  专栏  ›  技术社区  ›  fred basset

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

  •  5
  • fred basset  · 技术社区  · 15 年前

    所有的,

    我公司正处于使用另一个国家的另一家公司的嵌入式控制系统的情况。我们没有这个系统的源代码或示意图,而且制造商不想发布它们,似乎是以任何价格或任何条款。 因此,我们需要6个月的时间来完成一个小的修改,他们基本上可以收取他们想要的任何费用。

    撇开法律因素不谈,将嵌入的代码逆向工程到C中是否完全可行?有什么公司可以为我们做这件事吗?

    谢谢您, 弗莱德

    6 回复  |  直到 15 年前
        1
  •  2
  •   YeahStu    15 年前

    相当大的“视情况而定”。

    源代码映射-对象代码(从数学上讲)不可逆,因此无法恢复 这个 源代码。但是,如果您有对象代码,那么就不难找到一种编译到相同对象代码的源代码,或者至少具有相同效果的源代码——这只是反汇编/汇编。

    不过,根据反编译过程的创造性,C代码可能看起来很像汇编程序。所以我会质疑我可能从第三方那里得到的代码的质量-“C代码”并不意味着“C代码很容易被我们的C程序员维护”,而产生后者可能真的很困难。

    另外请注意,“用C语言编写”的嵌入式控制器在其源代码中实际上可能包含相当多的汇编程序。所以要么你允许在你的逆向工程版本中使用汇编程序,要么你不允许。如果你不允许,可能不可能在C中再现功能。如果你允许,那么你在哪里画线-极端的情况下,你可以只分解它们的源代码,根本没有任何合适的C代码。通过检查对象代码,您不一定能分辨出哪些位是用C编写的,哪些位不是用C编写的。

    当然,所有这些都忽略了法律问题。把法律问题放在一边可能是不明智的,特别是当你似乎把这个系统作为一个物理对象购买时,你可能根本没有将代码与硬件分开的法律依据。

        2
  •  4
  •   Doug Currie    15 年前

    有很多公司会在不进行逆向工程的情况下重新实现嵌入式控制系统,只要你知道系统的需求。

        3
  •  2
  •   Community CDub    8 年前

    见答案 reverse engineering c programs

    特别是,请参阅我的答案“从猪到香肠”。如果所讨论的汇编程序没有执行在C中无法状态的操作(例如,“设置堆栈指针寄存器…”),那么本文后面的公司可以很好地将汇编程序转换回C。

    [我和猪对香肠的人没有任何关系,除了认识他们并对他们的技术领导非常尊重。]

        4
  •  0
  •   Wikser    15 年前

    假设您能够从系统中检索二进制代码,那么分解和梳理二进制代码应该没有问题。将汇编程序代码转换为 可维护的 C代码是一个大问题。根据系统的大小,这将需要大量时间手动(重新)将代码写入可用的内容。

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

        5
  •  0
  •   Norman Ramsey    15 年前

    如果您正在寻找帮助逆向工程的公司,那么您可能需要仔细研究一下谁在 Working Conference on Reverse Engineering . 在那里找一些能给你留下深刻印象的工作,问问那些要雇用谁的人。

        6
  •  0
  •   Jeff Lamb    15 年前

    你最好在家里组建一个嵌入式团队。同时,你需要做4-5个软件变更,有了合适的团队,你就可以拥有完全自主的硬件和软件设计,再加上可以快速实施变更的内部专业知识。

    …更不用说,如果产品有相当大的销量,你会节省多少钱。