代码之家  ›  专栏  ›  技术社区  ›  Chathuranga Chandrasekara

PIC的十六进制反编译程序

  •  6
  • Chathuranga Chandrasekara  · 技术社区  · 14 年前

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

    编辑:设备PIC 16F84A

    3 回复  |  直到 12 年前
        1
  •  7
  •   Clifford    14 年前

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

    然而反汇编是很简单的,尽管您是否能够理解结果代码是另一回事,因为十六进制文件中没有保留注释或符号;如果您有原始的目标代码,它可能会使反汇编更具可读性。有许多PIC反汇编程序可用,只是谷歌它;我不能指导你在任何一个具体的,因为有一个不同的指令集PIC系列的数量,而你没有指定。

        2
  •  2
  •   David Cary    6 年前

    官方PICList技术参考中有PIC反汇编程序列表。

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

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

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

        3
  •  1
  •   Cobusve    14 年前

    如果设备没有代码保护,也可以使用它从设备中读取代码。

        4
  •  0
  •   bjoubert89    4 年前

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

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

    使用MPLAB X IDE和PIC程序员(我使用PICkit3)从编程设备读取.hex文件:

    • 为您的设备启动一个新项目。
    • 右击项目文件夹,选择“设为主项目”。
    • 单击“ReadDeviceMemoryMainProject”旁边的箭头,然后选择“ReadDeviceMemoryToFile”。 Reading device memory to .hex file

    拆卸六角螺母

    https://gputils.sourceforge.io/

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

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

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