gpt4 book ai didi

compiler-construction - 如何对编译器进行逆向工程?

转载 作者:行者123 更新时间:2023-12-04 08:28:31 25 4
gpt4 key购买 nike

我有一个编译器,可以为未记录的 VM 编译为未记录的字节码。我希望能够编译到同一个 VM,但我不确定如何去做。我如何学习做到这一点?有没有人发表过他们做同样事情的日志或日志?

编辑 : 我忘了说这是RobotC 3.0 compiler对于乐高头脑 Storm 。在有人提出其他建议之前,我对 nXc 和类似项目了如指掌,但由于我正在帮助 FIRST FTC 机器人团队,因此我无法选择它们,该团队只允许使用 RobotC 或 LabView。

至于那些建议我针对编译器语言的人,我还没有这样做,因为我希望编译器未公开的硬件的某些功能将被固件公开,因为我想要做比 RobotC 允许的更多的自定义内存管理。

最佳答案

我的倾向是反汇编编译器。如果它是用 .NET(C#、VB.NET 等)或 Java 编写的,那么有些反编译器会给你一些东西非常接近原始源代码(除非它被混淆)。即使它是 C++ 并且您只能获得汇编,库调用也可能会为您指明正确的方向。

  • x86 Disassembly/Disassemblers and Decompilers
  • ILSpy
  • JetBrains dotPeek
  • Java Decompiler

  • 如果字节码很小,另一种选择是从“Hello world”程序开始,编译它,做一个小的改动,编译它,然后比较两个字节码的结果。

    如果您可以发布有关特定编译器/VM 的更多信息,也许其他人有这方面的经验。

    编辑:鉴于这是一个商业产品,通过反编译对其进行逆向工程很可能会违反其许可协议(protocol)。 RE'ing 字节码可能不会(我不是律师)。不过,这听起来像你在 Catch-22 中。如果你成功了,你就没有使用 RobotC 或 LabView。如果比赛只指定代码必须在 RobotC VM 上运行,它可能是可行的。但是请记住,一旦您重新编写了字节码,您仍然必须编写自己的编译器,然后任何人都可以编写任何软件。如果您这样做是为了好玩,那就太好了;否则可能不可行。

    我确实找到了一个基于硕士论文的有趣链接: Software Reverse Engineering

    关于compiler-construction - 如何对编译器进行逆向工程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439893/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com