关于芯片程序的机器码、汇编代码、源代码常常是令人混淆的几个概念,今天我们主要给大家介绍一下这几种代码的特点和一般功能。
机器码顾名思义是单片工作且能识别和运行的一类代码,常见的格式有二进制BIN格式、十进制HEX格式等。简单来说就是便于机器识别的高低电平组合,每个单片机里都有状态分析电路能分析每个机器码的含义从而驱动单片机运行。机器码的优点是一般存储较小,便于单片机识别,缺点也很明显就是人无法读懂和直接进行功能修改。
汇编代码的概念就是面向机器的程序设计语言,在汇编语言中用助记符号代替操作码,用标号或者地址符代替地址码,用符号代替机器码,把机器语言转换成可简单读懂的汇编语言,也称做符号语言。这里所说的可读懂只是对于熟悉编程的专业人员可以部分,如果需要进行比较复杂的逆向工程功能分析修改、注册码寻找、漏洞分析等,通常难以完成的,所以在逆向工程领域又要引出另外一种代码-源代码的概念。
源代码也称源程序,这是一种人类可读可修改的计算机语言,源代码即我们技术人员平时的开发代码,通常以C语言、JAVA语言、PYTHON语言等工具实现,其中C语言是大家使用最广泛也是最为熟悉的工具。拥有源代码的好处不言而喻,既可以立即读懂(专业人员)也可以实现任意功能修改,在逆向工程领域,掌握源代码即掌握程序的所有权。
近年来,由于客户对于产品性能的不断优化,越来越多的客户需要将机器码反汇编甚至反C源代码来修改和升级产品的功能,实质上完整的反C代码是基本不可能实现的,但我们可以利用机器码进行反汇编操作,再通过汇编代码进行反C操作得到一个伪C代码,只是工作量巨大所以一般成本较高。这样得到的源代码也是技术工程人员可以读懂的,如果需要进行程序修改升级就简单的多了。目前我们已经为客户做过很多相关案例,拥有丰富的经验和实力。