用于PIC的十六进制分解器

时间:2010-06-03 10:18:19

标签: embedded hardware microcontroller decompiling mikroc

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

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

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

那么有没有人对我可以用于此目的的好的HEX反编译器有任何经验?根据您的经验发表任何评论? :)

编辑:器件PIC 16F84A

4 个答案:

答案 0 :(得分:6)

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

然而,反汇编是直截了当的,但是,由于在HEX文件中没有保留任何注释或符号,您是否能够理解所得到的代码是另一回事。如果你有原始的目标代码,它可能会使反汇编更具可读性。有许多PIC反汇编程序,只有谷歌它;我无法指导您处理任何特定的PIC系列,因为有许多PIC系列具有不同的指令集,而您没有指定。

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

我知道这是一篇过时的文章,但是最近我遇到了类似的问题,并且在网上找不到非常完整的答案。由于硬盘驱动器故障,我丢失了MPLAB X IDE项目,幸运的是,我已经使用有效版本的代码对设备进行了编程。

恢复.hex
请按照以下步骤从已编程的设备中恢复组装源(或尽可能接近):

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

  • 为您的设备启动一个新项目。
  • 在“项目属性”中选择您的程序员。
  • 右键单击项目文件夹,然后选择“设置为主项目”。
  • 单击“读取设备内存主项目”旁边的箭头,然后选择“将设备内存读取到文件”。 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选项,可以生成一个很好的清单,几乎可以按原样进行组装。显然,变量名和标签无法恢复,但是至少标识了子例程,这使事情变得容易得多。希望这对以后的人有所帮助。