Embedded 用于PIC的十六进制反编译器

Embedded 用于PIC的十六进制反编译器,embedded,hardware,microcontroller,decompiling,mikroc,Embedded,Hardware,Microcontroller,Decompiling,Mikroc,我遇到了PIC微控制器的问题 我很久以前就有一个自己编程的微控制器,我丢失了相关的源代码和原理图。现在我需要反转端口的值。我可以使用一些非门来实现这一点,但这样做是一个很大的麻烦。或者我需要把整个程序写回去 我不希望在picc或MikroC中看到代码。有一个可理解的汇编代码就足够了 那么,有没有人对一个好的十六进制反编译器有任何经验,我可以用于此目的?根据您的经验有何评论?:) 编辑:设备PIC 16F84A您应该能够将十六进制文件加载到MPLAB IDE中,从那里查看汇编代码,并运行它,如果我

我遇到了PIC微控制器的问题

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

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

那么,有没有人对一个好的十六进制反编译器有任何经验,我可以用于此目的?根据您的经验有何评论?:)


编辑:设备PIC 16F84A

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

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

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

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


反汇编的一种简单方法是,只需将您的十六进制文件加载到MPLAB中,然后选择查看->反汇编列表,然后右键单击窗口并选择“输出到文件”。此输出可能需要一些处理,以便适合输入到汇编程序。

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

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


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

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

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

  • 为您的设备启动一个新项目
  • 在“项目属性”中选择您的程序员
  • 右键单击项目文件夹并选择“设为主项目”
  • 单击“读取设备内存主项目”旁边的箭头,然后选择“将设备内存读取到文件”
拆卸.hex
您可以在MPLAB X IDE中查看反汇编,但无法编辑或保存它(或者至少我不知道如何进行),而且它非常神秘。我发现最简单的,没有附加字符串的,反汇编程序是用gputils打包的,它叫做gpdasm。要下载和安装,请访问此处的gputils页面:

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

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

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

这两个链接都已失效。实际上,该站点似乎是“空的”&在Thai@brewmanz:好的,我修复了断开的链接——相同内容的新URL现在似乎对我有效。