将二进制转换为手臂

Nmz*_*kin 5 architecture binary x86 arm

我如何在手臂上运行x86二进制文件(例如.exe文件)?正如我在Wikipedia上所看到的那样,我需要将模拟平台的二进制数据转换为适合在目标平台上执行的二进制数据。我需要在十六进制编辑器中打开文件并进行更改吗?还是其他?

Pau*_*mer 5

要成功地做到这一点,您必须做两件事。一件事相对容易,一件事很难。您都不希望通过十六进制编辑器手动进行任何操作。

  1. 将机器代码从x86转换为ARM。这很简单,因为您应该能够将每个x86操作码映射到一个或多个ARM操作码。有多种方法可以做到这一点,有些方法比其他方法更有效,但是可以通过非常简单的映射来完成。

  2. 重新映射函数调用(和其他跳转)。这是很难的,因为胡乱操作码将更改跳转点和返回点的所有偏移量。如果您具有动态链接的库(.so),并且我们假设所有库在两个地方都具有完全相同的版本(充其量只是个粗略的假设),则必须重新映射负载。

本质上,它是机器->机器编译器和链接器。

那么,你能做到吗?当然。

这简单吗?没有。

可能有一个商业工具,但我不知道。

  • google术语,例如:静态二进制翻译。首先,您需要编写一个反汇编程序,对于x86,这是一个高级项目。然后,您将这些指令中的每一个转换为其他某种语言。机器对机器有效,但是我认为(基于个人经验)您会发现转换为C或类似的更好选择,然后针对任何平台进行编译。Paul省略了3)模拟手臂上的x86,因为已经有太多这样的选择了,所以是最简单的选择。 (2认同)