发明名称 |
一种固件代码反汇编中端模式差异的处理方法 |
摘要 |
本发明涉及一种固件代码反汇编中端模式差异的处理方法。首先初始化机器码;然后由检测模块进行机器码检测,检测机器码的长度L,保证L是N的整数倍,若不足则补零,将数组C转换成数组D。其中N是依据不同硬件情况决定,若硬件的存储单元大小为M bit,则N=M/2;再由局部逆置模块将数组D中的元素以每N个为一个单元U,单元内部对半调换;最后由全局逆置模块将单元U编号为0、1、……、n-1,分别将编号之和为n-1的两个单元的内容进行逆置。利用本发明可以有效解决各种微处理器的反汇编机器码的正确性问题,在反汇编之前对智能电能表内部MCU芯片提取的机器码的顺序加以调整,提高最终生成的高级语言的精确度。 |
申请公布号 |
CN102968330B |
申请公布日期 |
2015.08.19 |
申请号 |
CN201210489305.4 |
申请日期 |
2012.11.27 |
申请人 |
武汉大学 |
发明人 |
刘金硕;王谢兵;李少腾;章喻龙;刘源;刘天晓;王亚鸽;曾秋梅 |
分类号 |
G06F9/45(2006.01)I |
主分类号 |
G06F9/45(2006.01)I |
代理机构 |
武汉科皓知识产权代理事务所(特殊普通合伙) 42222 |
代理人 |
鲁力 |
主权项 |
一种固件代码反汇编中端模式差异的处理方法,其特征在于,包括以下步骤:步骤1:由初始化模块将从芯片中提取的机器码存放在数组C中;通常情况下机器码样本为二进制形式或十六进制形式,若为二进制形式,则将其转换为十六进制形式;步骤2:由检测模块进行机器码检测,即:检测机器码的长度L,保证L是N的整数倍,若不足则补零,将步骤1中的数组C转换成数组D,N是依据不同硬件情况决定,若硬件的存储单元大小为M bit,则N=M/2;步骤3:由局部逆置模块将步骤2中的数组D中的元素以每N个元素为一个单元U,单元内部对半调换,即前N/2个元素和后N/2个元素整体调换位置;步骤4:由全局逆置模块将步骤3中的多个单元U编号为0、1、……、n‑1,分别将编号之和为n‑1的两个单元的内容进行逆置,即0单元和n‑1单元交换内容;1单元和n‑2单元交换内容;2单元和(n‑3)单元交换内容……m单元和(n‑m‑1)单元交换内容;n为正整数。 |
地址 |
430072 湖北省武汉市武昌区珞珈山武汉大学 |