什么是单片机反汇编?为什么要进行反汇编?

日期:2009-04-14 09:49:16   浏览次数:6462   

一、什么是汇编和反汇编

 工程师编写单片机程序的时候一般是采用用汇编语言或高级语言(C或C++)编写的,这些程序代码叫原代码,当程序编写完成后,经过编译软件或编译器的编译生成可以烧录到单片机ROM存储区里的文件,不同型号的单片机的编译器生成的文件后缀是不同的,但是常用的BIN和HEX文件,这些生成的文件在解密行业里叫机器代码,及机器码,这样的机器码是在单片机里运行的,也可以说是只有机器能够读懂的。而反汇编即是指将这些执行文件,即机器码反编译还原成汇编语言。但通常反编译出来的程序与原程序会存在许多不同,虽然执行效果相同,但程序代码会发生很大的变化,如果是语句比较多的汇编,一般人很难读懂,需要自己加注释,然后去一条一条的读,是需要一定的毅力的,我曾经为了分析一个芯片的反汇编代码,花费了一周的时间。所以说并不是反汇编后有了原程序,就一切都明白了,更多的是需要工程师的技术分析。

  反汇编的方法有手工反汇编和软件反汇编,现在的单片机规模越来越大,嵌入的代码也越来越多,那么就给手工反汇编带来了很多麻烦,需要大量的时间,使用软件反汇编是理想的方式,只要有了反汇编的软件,在计算机里运行后很快就可以完成反汇编工作。

二、为什么要进行反汇编

  因为工程师对机器码无法读懂,那么学习解密后提供的文件就比较困难,另外修改也不很方便,需要技术人员对单片机的汇编和反汇编非常清楚才可以直接去修改。如果能提供反汇编后的文件,那么就相对容易了一些。基于以上原因,很多客户希望能提供反汇编业务,我们解密后提供的文件是BIN或HEX文件,如果客户需要,可以从我们网站下载反汇编软件进行反汇编。如果我们没有公布的反汇编软件的型号,我们提供反汇编业务,但是需要一定的费用和时间。

 既然我们叫反汇编,经过反汇编后提供的就是汇编语言代码,而不是C语言代码,很多客户咨询能不能提供C代码,您的想法我们可以理解,但是我们没有那个能力去反成C语言。