可以把PIC单片机里的源程序拷备出来吗?

如题所述

如果没有加密,可以用MPLAB用ICD2或者其他编程器读到汇编指令。但所有伪指令和宏指令都没有了,这个看起来很难懂得。
如果已经加密了,拷出来也看不了,黑客一不行,因为加密算法是不可逆的。
如果程序原本是 C语言写的,但C语言程序会被MPLAB先编译成汇编后才能烧写进单片机,所以读出的依然是汇编,无法转换成C。追问

也就是说,读出来的是二进制码,我们看不懂了,也就没有参考价值了,是吗?

追答

不是。直接读出来的是二进制代码,但MPLAB会帮你把这个代码翻译成类似 MOVWF、 ADDWF等之类的汇编代码。
比如MOVWF 10H什么的(是指把10H这个地址的变量赋值给W工作寄存器)这个10H可能指源程序中的某个变量的地址。如果你对汇编不是很熟悉的话,很难了解程序的大致结构的。对于一个三四千行的程序,与其这样拷贝出来费脑子理解意思。还不如自己想想怎么写,特别是对于初学者,更不知道程序写得是什么东西了。这种方法仅限于那些老手必须破解竞争对手产品中的某些协议指令。
可以这杨假设,如果你能读懂MOVWF 10H之类的汇编指令,你就不会来问这个问题了,因为你自己知道该怎么做。所以初学者的话想参考程序还是找些MPLAB自带的例程(汇编的)或者是PICC编译器的例程(C语言的) 把

追问

恩,我是不知道如何把程序读出来的,汇编我能看懂一点的,我想只要读出来还是有一点参考价值的,恩,高手啊,你啊能,给个具体步骤的啊,就是如何把单片机中的程序读出来的,谢谢了啊

追答

我只用过ICD2来读芯片信息,其他的PICKIT神马的编程器仿真器操作都类似。
1首先ICD2要接好电脑和要读的PIC芯片的目标板上的ISCP口。在MPLAB的Debugger里配置好ICD2的信息(最好用带USB口的ICD2或者ICD3,用串口的ICD配置不好配。),目标板上电。
2然后MPLAB里建立好一个project,配置芯片型号的时候要和目标板上的PIC芯片型号一致否则会有问题。
3因为第一步配置好了ICD2,所以菜单栏的Debugger里的选项会多出一些来。点击其中的“Read”。过几秒应该就读进来了。如果是加密的就读不了,应该会有提示的。然后在菜单栏中的“view” -> “Disassembly Listing”就能看到。
补充一下:如果Disassembly Listing选项看不到的话,就看看view下面的其他选项,具体我忘了。好久不玩PIC的代码破解了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-16
如果芯片烧写程序的时候没开代码保护,是可以读出来的,但是读出来的是机器码,不是源程序了,你是不可能看懂的。除非你变成黑客帝国里的尼奥了,呵呵。
第2个回答  2012-02-16
说具体点 那得程序要拷贝出来啊 如果是芯片里面的 那已经不是源程序了追问

对的啊,就是芯片里的程序呢,可以拷出来参考吗?

追答

如果没有加密可以拷出来的 我试过

第3个回答  2012-02-16
可以
相似回答