【问题标题】:Hex Decompilers for PICPIC的十六进制反编译器
【发布时间】:2010-06-03 10:18:18
【问题描述】:

我遇到了 PIC Micro 控制器的问题。

我有一个很久以前编程的微控制器,我丢失了相关的源代码和原理图。现在我需要反转端口的值。我可以使用一些非门来做到这一点,但这样做很麻烦。或者我需要把整个程序写回去。

我不希望在 PIC C 或 MikroC 中看到代码。有一个可以理解的汇编代码就足够了。

那么有没有人对我可以用于此目的的优秀 HEX 反编译器有任何经验?根据您的经验,任何 cmet? :)

编辑:设备 PIC 16F84A

【问题讨论】:

    标签: embedded hardware microcontroller decompiling mikroc


    【解决方案1】:

    反编译不太可能是一个实用的解决方案,甚至更不可能存在针对您的特定编译器和指令集组合的工具。

    然而,反汇编很简单,尽管您是否能够理解生成的代码是另一回事,因为 HEX 文件中没有保留任何 cmets 或符号;如果您有原始目标代码,它可能会使反汇编更具可读性。有很多 PIC 反汇编器可用,只需谷歌它;我无法针对任何具体的问题指导您,因为有许多 PIC 系列具有不同的指令集,而您没有具体说明。

    一种简单的反汇编方法是将您的 HEX 文件加载到 MPLAB 中并选择 View->Disassembly Listing,然后右键单击窗口并选择“Output to File”。这个输出可能需要一些按摩才能适合输入到汇编程序。

    【讨论】:

      【解决方案2】:

      在官方 PICList 技术参考中有一个 PIC 反汇编器列表。

      许多人从不使用独立的反汇编程序,而是更喜欢在他们最喜欢的 PIC 模拟器中使用反汇编程序。

      http://piclist.com/techref/microchip/dissassemblers.htm

      http://piclist.com/techref/microchip/simulators.htm

      【讨论】:

      • 这两个链接都失效了。实际上,该网站似乎是“空的”并且是泰语
      • @brewmanz:好的,我修复了损坏的链接——相同内容的新 URL 现在似乎对我有用。
      【解决方案3】:

      我知道这是一个旧帖子,但是我最近遇到了类似的问题,并没有在网上找到一个非常完整的答案。由于硬盘驱动器故障,我丢失了我的 MPLAB X IDE 项目,幸运的是我已经用代码的工作版本编写了一个设备。

      恢复 .hex
      请按照以下步骤从已编程设备中恢复 .hex 信息:

      使用 MPLAB X IDE 和您的 PIC 编程器(我使用 PICkit3)从已编程的设备中读取 .hex 文件:

      • 为您的设备启动一个新项目。
      • 在“项目属性”中选择您的程序员。
      • 右键单击项目文件夹并选择“设置为主项目”。
      • 单击“Read Device Memory Main Project”旁边的箭头并选择“Read Device Memory to File”。 Reading device memory to .hex file

      反汇编.hex
      您可以在 MPLAB X IDE 中查看反汇编,但您无法编辑或保存它(或者至少我不知道如何操作),而且它非常神秘。我发现最简单的,没有附加条件的反汇编器是与 gputils 一起打包的,它被称为 gpdasm。要下载和安装,请访问此处的 gputils 页面:

      https://gputils.sourceforge.io/

      现在打开命令提示符并导航到 .hex 文件所在的文件夹。使用以下命令从 .hex 生成汇编源文件:

      gpdasm -p p16f84a -csno hexfile.hex > asmfile.dis
      

      使用 -c -s -n 和 -o 选项,这会生成非常好的列表,非常接近能够按原样组装。显然变量名和标签无法恢复,但至少可以识别子程序,这使事情变得容易得多。希望这对将来的人有所帮助。

      【讨论】:

        【解决方案4】:

        如果我没记错的话,您应该能够将 hex 文件加载到 MPLAB IDE 中并从那里查看汇编代码以及运行它并在仿真器中逐步执行代码。

        如果设备不受代码保护,您也可以使用它从设备读取代码。

        【讨论】:

          猜你喜欢
          • 2017-12-20
          • 1970-01-01
          • 1970-01-01
          • 2018-07-26
          • 2011-12-19
          • 2011-02-05
          • 1970-01-01
          • 2023-03-14
          • 1970-01-01
          相关资源
          最近更新 更多