【问题标题】:Is there any way to find the Instruction Set of an undocumented processor?有什么方法可以找到无证处理器的指令集?
【发布时间】:2012-06-21 15:17:40
【问题描述】:

有些处理器没有商业发布的文档来解释其指令集是什么。如果您可以访问处理器,是否有任何方法可以通过篡改或外部设备找到指令集?

【问题讨论】:

  • 我猜你也没有它的工具链?
  • 已经完成了。这是一项巨大的工作。你有设备的二进制文件吗?二进制文件的统计分析可以揭示很多。市面上有很多贴有 OEM 标记的商业产品版本,您有多确定它不是其中之一?最近,古老的 6502 使用蚀刻层上的图像分析进行了反转。这似乎为自动化流程提供了绝佳机会。
  • 最简单的方法是问知道的人:-}

标签: assembly reverse-engineering cpu-architecture instruction-set


【解决方案1】:

一般来说,不,仅仅看比特不会让你走得太远。想象一下其中一个混乱的谜题,但你有超过 26 个字符(字母表)。您可以对位模式进行一些分析,但这会给您带来什么,不知道可能是无条件分支或其他一些流行指令的体系结构,而不知道您不知道流行指令是什么。例如,假设英语是一个混乱的难题,您知道哪些字母和单词是常见的,可以尝试从那里开始,您对指令宽度没有内部知识,等等。

如果它碰巧类似于已知的指令集,您仍然有同样的问题,修改指令,如果已经取消定义并使其成为新指令,您可能无法在没有内部芯片可见性的情况下判断它们是什么(jtag 在这个级别不会真正给你,因为 jtag 提供的信息也需要内部信息)。

【讨论】:

  • 那么,我们如何找到指令集,比如说氙气处理器(它没有商业文档的指令集)。有什么想法或想法吗? wii 使用 Broadway PPC 处理器,这也没有记录在案,但他们能够以某种方式找到指令集,不是吗?
  • 它并不总是盲目地完成,有一些信息,或者有人泄露了文档,或者有人访问了编译器,或者已知它是相似的或基于其他处理器,而你从那里。盲目地盯着一盒比特是浪费时间,你想破解你使用社会工程以及你能想出的任何其他工具或信息的东西。巨大的飞跃来自一切,但盯着位。最后的抛光来自盯着位。
  • 你自己回答了一个问题,broadway ppc,它是一个 powerpc,这是一个巨大的信息,如果你能够访问修改程序,你可以整理任何未记录的指令等三秒打字的氙气也是基于ppc,向前迈进了一大步。没有理由孤立地盯着二进制文件中的位。
  • 基本上你的例子不符合你的问题,你的问题是如果没有发布的文件,那两个发布的文件包含有关处理器的信息。如果您还不知道,打几个电话会告诉您如何销售 ppc 处理器以了解它是否以 ip 的形式出售,如果可以,可以修改指令集,如果不能,除了外围设备等还能修改什么?您可以从销售中获得的所有信息也被视为商业上可用的信息或文档,这不属于您的问题所述。
【解决方案2】:

“通过篡改”?当然。撬开芯片的盖子。拍摄芯片布局的快照(您可以使用各种扫描电子显微镜进行此操作)。推断数字电路(一些特殊设备会告诉您芯片元件在运行时的状态;Schlumberger 的 ATE 设备可以做到这一点)。解码它的作用。拥有源代码会有所帮助。

你可能很难猜出一个操作码做了什么;想象一条指令执行用于计算超越数的部分多项式求值,或者更糟糕的是执行快速傅立叶变换中的蝶形步的指令。

【讨论】:

    【解决方案3】:

    您可以查看JTAG。它是一种用于调试 CPU 的协议。

    另一种选择是检查架构是否基于另一个公共架构并尝试比较以发现差异。

    编辑:另外,该架构没有调试器吗? C 编译器?这是非常罕见的。如果您有调试器和/或 C 编译器,您可以检查程序集并与生成的二进制文件进行比较。调试器还应该允许您反汇编已经存在的二进制文件。

    【讨论】:

    • 理解 JTAG 告诉您的内容是一个小问题,前提是您已经知道芯片的功能。我不认为这是一个有用的答案。
    • 你说得对,我添加了另一种可能的解决方案。编辑:只需阅读 dbrank0 评论...
    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多