[发明专利]继电保护装置嵌入式软件的反汇编方法和系统有效
申请号: | 201610396955.2 | 申请日: | 2016-06-06 |
公开(公告)号: | CN106055378B | 公开(公告)日: | 2018-03-13 |
发明(设计)人: | 陈华军;王剑亮;宾建伟;张宝林;刘奕宏;蒙家晓;黄建理;杜金燃 | 申请(专利权)人: | 中国南方电网有限责任公司电网技术研究中心;南方电网科学研究院有限责任公司;工业和信息化部电子第五研究所 |
主分类号: | G06F8/53 | 分类号: | G06F8/53 |
代理公司: | 广州华进联合专利商标代理有限公司44224 | 代理人: | 陈金普 |
地址: | 510080 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 保护装置 嵌入式 软件 汇编 方法 系统 | ||
1.一种继电保护装置嵌入式软件的反汇编方法,其特征在于,包括如下步骤:
获取继电保护装置嵌入式软件的反汇编代码中的各个指令,分别识别间接转移类型的指令及其指令地址;
根据所述指令的指令类型建立用于保存指令地址的二叉树;其中所述二叉树中,一个结点保存一个指令地址,所述二叉树左子树的结点用于保存所述间接转移类型的指令的指令地址;
在对嵌入式软件进行反汇编时,遍历所述二叉树的结点,查找所述二叉树的左子树,将所述左子树的后继结点所对应的指令地址设置为目标地址;
获取所述目标地址对应的指令内容,对所述指令内容进行反编译;
所述根据所述指令的指令类型建立用于保存指令地址的二叉树的步骤后还包括:获取反汇编代码中第一个指令的指令地址;将所述第一个指令的指令地址保存至二叉树的根节点;
所述根据所述指令的指令类型建立用于保存指令地址的二叉树的步骤包括:根据所述反汇编代码中间接转移类型的指令个数建立二叉树,所述二叉树中左子树的结点个数等于指令个数;判断反汇编代码中的指令是否为间接转移指令;若是,则将所述指令的地址保存至二叉树的左子树,若反汇编代码中的指令为非间接转移指令,则将所述指令的地址保存至二叉树的右子树;
将所述指令的指令地址进行标记,并获取下一个指令,返回执行判断反汇编代码中的指令是否为间接转移指令的步骤。
2.根据权利要求1所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述判断反汇编代码中的指令是否为间接转移指令的步骤前还包括:
获取反汇编代码中指令的指令地址;
判断所述指令地址是否已标记;
若是,则获取下一个指令。
3.根据权利要求1所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述判断反汇编代码中的指令是否为间接转移指令的步骤前还包括:
判断所述指令地址是否在设定的地址范围外;
若是,则对所述二叉树的结点进行遍历。
4.根据权利要求1所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述在对嵌入式软件进行反汇编时,遍历所述二叉树的结点,查找所述二叉树的左子树,将所述左子树的后继结点所对应的指令地址设置为目标地址的步骤包括:
对二叉树进行寄存器间接寻址,回溯扫描各指令地址,寻找各指令地址对应的寄存器号,并根据所述寄存器号计算目标地址。
5.根据权利要求1所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述在对嵌入式软件进行反汇编时,遍历所述二叉树的结点,查找所述二叉树的左子树,将所述左子树的后继结点所对应的指令地址设置为目标地址的步骤包括:
对二叉树进行存储器间接寻址,回溯扫描各指令地址,寻找各指令地址对应的存储器变量,并根据所述存储器变量计算目标地址。
6.根据权利要求1所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述在对嵌入式软件进行反汇编时,遍历所述二叉树的结点,查找所述二叉树的左子树,将所述左子树的后继结点所对应的指令地址设置为目标地址的步骤后还包括:
检测当前遍历的二叉树结点的后继是否为空;
若是,则判断所述二叉树遍历完毕。
7.根据权利要求1至6任一项所述的继电保护装置嵌入式软件的反汇编方法,其特征在于,所述指令类型包括非间接转移指令类型;所述获取所述目标地址对应的指令内容,对所述指令内容进行反编译的步骤后还包括:
将非间接转移类型的指令所对应的指令地址分别保存至二叉树中右子树的各个结点;
在对嵌入式软件进行反汇编时,查找所述二叉树的右子树,获取所述右子树中各个结点保存的指令地址;
对右子树中各个结点保存的指令地址所对应的指令内容进行反编译。
8.一种继电保护装置嵌入式软件的反汇编系统,其特征在于,包括:
识别模块,用于获取继电保护装置嵌入式软件的反汇编代码中的各个指令,分别识别间接转移类型的指令及其指令地址;
建立模块,用于根据所述指令的指令类型建立用于保存指令地址的二叉树;其中所述二叉树中,一个结点保存一个指令地址,所述二叉树左子树的结点用于保存所述间接转移类型的指令的指令地址;所述根据所述指令的指令类型建立用于保存指令地址的二叉树后还包括:获取反汇编代码中第一个指令的指令地址;将所述第一个指令的指令地址保存至二叉树的根节点;所述根据所述指令的指令类型建立用于保存指令地址的二叉树包括:根据所述反汇编代码中间接转移类型的指令个数建立二叉树,所述二叉树中左子树的结点个数等于指令个数;判断反汇编代码中的指令是否为间接转移指令;若是,则将所述指令的地址保存至二叉树的左子树,若反汇编代码中的指令为非间接转移指令,则将所述指令的地址保存至二叉树的右子树;将所述指令的指令地址进行标记,并获取下一个指令,返回执行判断反汇编代码中的指令是否为间接转移指令;
设置模块,用于在对嵌入式软件进行反汇编时,遍历所述二叉树的结点,查找所述二叉树的左子树,将所述左子树的后继结点所对应的指令地址设置为目标地址;
反编译模块,用于获取所述目标地址对应的指令内容,对所述指令内容进行反编译。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国南方电网有限责任公司电网技术研究中心;南方电网科学研究院有限责任公司;工业和信息化部电子第五研究所,未经中国南方电网有限责任公司电网技术研究中心;南方电网科学研究院有限责任公司;工业和信息化部电子第五研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610396955.2/1.html,转载请声明来源钻瓜专利网。