一种针对嵌入式微处理器的反汇编方法

文档序号:6382476阅读:275来源:国知局
专利名称:一种针对嵌入式微处理器的反汇编方法
技术领域
本发明涉及涉及计算机学科中的嵌入式系统、决策理论、固件逆向工程技术等,尤其是涉及一种针对嵌入式微处理器的反汇编方法。
背景技术
广义地说,任一对程序的阅读理解均可视为逆向工程。1990年,Chikofsky提出了软件逆向工程的概念,将其定义为分析特定目标系统的结构组成及其相互关系并建立更高级更具抽象化的系统的过程。国家自然科学学科发展战略报告将软件逆向工程的任务定义为从可运行的程序系统出发,生成对应源程序及相关设计的文档。随着软件逆向工程技术的不断发展,固件逆向工程作为软件逆向工程的重要分支,因其特殊的研究对象方兴未艾。固件逆向工程是针对于固件中存储的代码程序的逆向分析,通常用于嵌入式系统。由于嵌入式系统千差万别,其种类数量已超过1000种,体系结构超过30个,应用于航天、制造、通信等诸多领域,因此固件逆向工程的工作难度往往较大,复杂度往往难以想象。通常意义下的反汇编就是把目标固件的机器代码转换为汇编代码的过程,亦即从低级语言向高级语言的转换,该技术被广泛地运用于计算机软件破解、病毒分析以及软件汉化等领域。当前,逆向工程还属于一个相当不成熟的领域,理论和实践研究均处于早期阶段。市场上的反汇编工具不断涌现,但是普遍存在平台的局限性和准确度。严格来说,一款通用的反汇编工具还未出现。

发明内容
本发明是适用于未知类型处理器的反汇编的,传统的反汇编工具如IAR等等存在很多版本,主要是为了针对于不同的处理器进行反汇编,不同版本之间无法兼容,这需要给定的处理器类型已知,因此对于庞大复杂的工程项目产品来说事倍功半。本次的研究成果一反汇编系统模型分为两块:反汇编模块和处理器识别模块。对于反汇编部分,本发明针对多处理器进行反汇编,对照各处理器指令集设计了自定义的算法,相对于大型的工程项目有良好的灵活性和可移植性。其反汇编的方法严格按照固件代码逆向工程的要求进行,设计的结果与反汇编工具IAR相对比,误差控制在一定范围之内。另一部分是传统工具不具备的,即处理器识别技术,根据反汇编的结果判定其所属的处理器类型。此过程又分为两步:1、简单判别。根据各个处理器类型的语法语义的特点,筛选出符合该类处理器特征的型号。2、深度判别。自定义各项指标来表征汇编指令的特性,对每类可能的处理器指标的值均有所不同,这样可以形成不同的特征值矩阵,应用多属性决策原则算法得到理想特征值对应的处理器。本发明拓展了传统反汇编工具的功能,其适用性也更加强大。另外,我们知道,反汇编的目的是为了得到更高级的抽象系统,这样可以便于分析,而汇编语言作为一种机器语言显然满足不了需求,因此为了工程上的可集成特点,本系统增添了汇编指令处理模块,对生成的汇编指令制定了数据地址表、指令地址表和转移标号地址表,方便未来的高级语言的编译。由图1可以看出,当未获得微处理器匹配的理想值时,系统会转入固件代码预处理环节进行再次处理,这样代码可以得到不断优化,其中的有效指令覆盖率也不断上升,可以证明这样的处理方式总能得到结果。因此,本系统也是一个自学习的系统,本系统的实现是自适应自学习思想在反汇编技术上的结合应用,这也是传统反汇编工具无法达到的层次。本发明的上述技术问题主要是通过下述技术方案得以解决的:一种针对嵌入式微处理器的反汇编方法,其特征在于,包括以下步骤:步骤1:将芯片与其相对应的调试器相连接,再与PC连接进行通信,对芯片加上相应的START信号,由提取固件机器码模块得到反馈信号和机器码;步骤2:由机器码预处理模块区分机器码中的指令和数据并将机器码样本标准化;步骤3:由固件代码反汇编模块以步骤2中的文本文件为输入,对照编写的算法进行运行得到备选的反汇编指令;步骤4:处理器匹配模块进行匹配判定,得到最可能匹配的微处理器的数量;步骤5:由调节反馈模块针对步骤4中得到微处理器的数量进行处理后得到最终的一个微处理器;步骤6:由汇编代码优化模块得到更加清晰的汇编指令,方便指令流分析:首先构造指令地址表、中断向量入口表、数据变量对照表等,然后根据表中的内容替换原汇编指令中的助记符、变量符号等达到高可读性的要求。在上述的一种针对嵌入式微处理器的反汇编方法,所述的步骤2中,机器码预处理模块处理过程分为两部分:一是区分机器码中的指令和数据,由于数据区对于程序功能的分析没有影响,因此只保留指令块部分,其中区分指令和数据的依据是基于下述约束条件:约束条件1:指令总是成块出现在内存中的;约束条件2:指令块的各字节的值具有随机性,即没有周期性、递增性或递减性;二是将机器码样本标准化,即以设定的格式输出文本文件。在上述的一种针对嵌入式微处理器的反汇编方法,所述的步骤4中,处理器匹配模块处理过程分为两部分:一是基本判定阶段,针对步骤3中得到的反汇编指令进行语法语义判断,排除部分不可能匹配的MCU类型,运用代码结构分析技术对所有MCU汇编指令进行分析,生成控制流程图,将图的判定结果作为MCU类型是否合理的依据;二是决策判定阶段,对于余下的多种可能存在的MCU,应用多属性决策TOPSIS算法得到最可能匹配的微处理器。在上述的一种针对嵌入式微处理器的反汇编方法,所述的步骤5的具体过程如下:
步骤5.1,若步骤4得到的处理器型号,有且只有一个,则执行步骤5.4 ;若步骤4得到的处理器型号,有多个,则执行步骤5.2 ;若步骤4得到的处理器型号为空,则执行步骤5.3;步骤5.2,在原始机器码中随机删除数段后重新组合作为新数组,转到执行步骤3。步骤5.3,在原始机器码数组中随机摘取数段重新组合为新数组,转到执行步骤3。步骤5.4,执行步骤6。因此,本发明具有如下优点:1.本发明具有自我识别功能,即在未知微处理器型号的情况下反汇编,最终得到匹配相似度最高的解。这是传统的类似工具所不具有的。本发明拓展了传统反汇编工具的功能,其适用性也更加强大;2.本系统增添了汇编指令处理模块,对生成的汇编指令制定了数据地址表、指令地址表和转移标号地址表,方便未来的高级语目的编译。


图1是本发明涉及的固件代码反汇编系统模型流程图。图2是本发明中机器码提取示意图。图3是本发明中机器码的反汇编。图4是本发明中M16C微处理器反汇编算法流程图。图5是本发明中多属性决策TOPSIS算法示意图。
具体实施方式
:嵌入式设备中的MCU芯片处理器种类各异,调查发现主流的MCU芯片处理器有RENESAS的M16C系列、TI的MSP430系列、Intel系列、8051、78k等。因此本发明就主流的MCU指令集进行反汇编,在未知目标代码所属指令集的情况下进行判断和相似度匹配。图1为本系统的总体流程。为了方便说明,下面以瑞萨单片机M16C系列MCU的反汇编为例详细说明反汇编的步骤方法:1.固件代码的提取。将芯片与其相对应的调试器E8A相连接,再和PC连接进行通信,对芯片加上相应的START信号,得到反馈信号和机器码。图2为由调试器通信得到机器码的示意图。2.固件代码的预处理。预处理环节分为两部分:一是区分机器码中的指令和数据,由于数据区对于程序功能的分析没有影响,因此只保留指令块部分,其中区分指令和数据的依据是基于这样的事实:指令总是成块出现在内存中的。指令块的各字节的值具有随机性,即没有周期性、递增性或递减性。二是将机器码样本标准化,即以特定的格式输出(本发明规定以后缀为b”的文本文件输出)。如表一所示,提取的原始代码经过处理之后得到只含有指令块的代码。这一步的做法是将地址码部分去掉,将指令块部分链接为一整串二进制字符。
表一
权利要求
1.一种针对嵌入式微处理器的反汇编方法,其特征在于,包括以下步骤: 步骤1:将芯片与其相对应的调试器相连接,再与PC连接进行通信,对芯片加上相应的START信号,由提取固件机器码模块得到反馈信号和机器码; 步骤2:由机器码预处理模块区分机器码中的指令和数据并将机器码样 本标准化; 步骤3:由固件代码反汇编模块以步骤2中的文本文件为输入,对照编写的算法进行运行得到备选的反汇编指令; 步骤4:处理器匹配模块进行匹配判定,得到最可能匹配的微处理器的数量; 步骤5:由调节反馈模块针对步骤4中得到微处理器的数量进行处理后得到最终的一个微处理器; 步骤6:由汇编代码优化模块得到更加清晰的汇编指令,方便指令流分析:首先构造指令地址表、中断向量入口表、数据变量对照表等,然后根据表中的内容替换原汇编指令中的助记符、变量符号等达到高可读性的要求。
2.根据权利要求1所述的一种针对嵌入式微处理器的反汇编方法,其特征在于,所述的步骤2中,机器码预处理模块处理过程分为两部分: 一是区分机器码中的指令和数据,由于数据区对于程序功能的分析没有影响,因 此只保留指令块部分,其中区分指令和数据的依据是基于下述约束条件: 约束条件1:指令总是成块出现在内存中的; 约束条件2:指令块的各字节的值具有随机性,即没有周期性、递增性或递减性; 二是将机器码样本标准化,即以设定的格式输出文本文件。
3.根据权利要求1所述的一种针对嵌入式微处理器的反汇编方法,其特征在于,所述的步骤4中,处理器匹配模块处理过程分为两部分: 一是基本判定阶段,针对步骤3中得到的反汇编指令进行语法语义判断,排除部分不可能匹配的MCU类型,运用代码结构分析技术对所有MCU汇编指令进行分析,生成控制流程图,将图的判定结果作为MCU类型是否合理的依据; 二是决策判定阶段,对于余下的多种可能存在的MCU,应用多属性决策TOPSIS算法得到最可能匹配的微处理器。
4.根据权利要求1所述的一种针对嵌入式微处理器的反汇编方法,其特征在于,所述的步骤5的具体过程如下: 步骤5.1,若步骤4得到的处理器型号,有且只有一个,则执行步骤5.4 ;若步骤4得到的处理器型号,有多个,则执行步骤5.2 ;若步骤4得到的处理器型号为空,则执行步骤5.3 ; 步骤5.2,在原始机器码中随机删除数段后重新组合作为新数组,转到执行步骤3 ; 步骤5.3,在原始机器码数组中随机摘取数段重新组合为新数组,转到执行步骤3 ; 步骤5.4,执行步骤6。
全文摘要
本发明涉及一种针对嵌入式微处理器的反汇编方法,流程如下1由提取固件机器码模块得到反馈信号和机器码;2由机器码预处理模块区分机器码中的指令和数据并将机器码标准化;3由固件代码反汇编模块对照编写的算法运行得到备选的反汇编指令;4由处理器匹配模块进行匹配判定,得到最可能匹配的微处理器的数量;5由调节反馈模块针对步骤4中微处理器的数量进行处理后得到最终的理想微处理器;6由汇编代码优化模块得到更加清晰的汇编指令。利用本发明可以对嵌入式系统设备进行测试。例如对智能电能表的生产成品和样品进行比较鉴别,控制批量生产的智能电能表与样品表的功能和质量误差在±20%内。
文档编号G06F9/45GK103106096SQ201210493379
公开日2013年5月15日 申请日期2012年11月27日 优先权日2012年11月27日
发明者刘金硕, 王谢兵, 李少腾, 章喻龙, 刘源, 许孝盛, 王亚鸽, 曾秋梅, 杨光, 郑稳 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1