是否可以将汇编语言转换为 LLVM IR,对其进行优化,然后将其重新编译为不同的体系结构?

发布于 2024-12-18 12:24:45 字数 201 浏览 2 评论 0原文

是否可以将汇编语言转换为 LLVM IR,对其进行优化,然后将其重新编译为不同的体系结构?您将如何处理 IR 中堆栈上的“push”和“pop”?这是我发现的最简单的反对意见,但我确信这样的反对意见还有很多。

我计划构建一个动态重新编译器,这似乎是一个很好的解决方案,因为 LLVM 会自动针对新架构优化我的代码。这一切都可以通过 LLVM 实现吗?

谢谢

Is it possible to translate an assembly language to LLVM IR, optimize it and then recompile it to a different architecture? How would you handle "push"es and "pop"s on the stack in the IR? This is the simplest objection I found, but I'm sure that there're tons like this.

I'm planning to build a dynamic recompiler, and it seems that this would be an excellent solution, since LLVM would automatically optimize my code for the new architecture. Is all this possible with LLVM?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ま柒月 2024-12-25 12:24:45

这是一个类似的问题: 使用 LLVM 将 x86 代码重新编译为更快的 x86

答案是 LLVM 不能直接执行此操作,但可以用作一部分一个可以做到这一点的工具。

This is a similar question: Recompile a x86 code with LLVM to some faster one x86

The answer is that LLVM can't do it directly, but could be used as part of a tool that does.

鹊巢 2024-12-25 12:24:45

这是可能的。

但是您需要开发一些 LLVM 代码库来实现将汇编语言转换为 LLVM IR 的过程。然后 LLVM 可以帮助您优化和生成新架构。

所以,关键是你需要开发一个可以将汇编语言翻译成 LLVM IR 的翻译器。我已经看到有人这样做了,你可以去网站上搜索一下。

It is possible.

But you need to develop some code base the LLVM to implement the process translating the assembly language to LLVM IR. Then the LLVM can help you to optimize and generator for new architecture.

So, the point is you need to develop the translator which can translate the assembly language to LLVM IR. I have seen someone already do that, you can search on the website.

执妄 2024-12-25 12:24:45

您可以尝试创建要优化的程序的符号表示,然后使用 Arybo 为了将符号表达式转换为 LLVM IR。


Jonathan Salwan 在他的存储库 Tigress_Protection 中执行了此操作,其中演示了如何使用符号执行和污点分析来对虚拟机进行反混淆使用他的工具 Triton 来获得程序的符号表示,并使用 Arybo,他将符号表达式转换为 LLVM IR,以便应用一些优化。我想这是一种方法。

You could try to create a symbolic representation of the program you want to optimize and then use a tool such as Arybo in order to convert the symbolic expressions into LLVM IR.


Jonathan Salwan does this in his repo Tigress_Protection where he demonstrates how to deobfuscate virtual machines using symbolic execution and taint analysis using his tool Triton in order to get a symbolic representation of the program and with Arybo, he converts the symbolic expressions into LLVM IR in order to apply some optimizations. I suppose this is one way to do so.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文