[发明专利]一种反汇编器指令匹配的处理方法无效
申请号: | 200810061923.2 | 申请日: | 2008-05-27 |
公开(公告)号: | CN101290574A | 公开(公告)日: | 2008-10-22 |
发明(设计)人: | 彭巍;黄凯;倪晓辉;赵民德 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 杭州求是专利事务所有限公司 | 代理人: | 林怀禹 |
地址: | 310027浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 汇编 指令 匹配 处理 方法 | ||
技术领域
本发明涉及反汇编器,尤其是涉及一种反汇编器指令匹配的处理方法。
背景技术
反汇编是汇编的逆过程,即将二进制代码转换为功能对等的目标平台的汇编语言表示的程序。而反汇编器是实现反汇编功能的工具。反汇编器是逆向工程中不可或缺的一个工具。
反汇编器的特点是与处理器相关。不同厂商生产的或不同指令家族的处理器可能有完全不同的汇编指令集。甚至同一厂商同一指令家族的处理器也可能会有指令集扩展。因此,针对不同的平台必须开发相应的反汇编器。
开发反汇编器的一个重要参考资料就是处理器厂商发布的指令集参考手册。当然,开发反汇编器的一个最直接的想法就是根据上述手册,将某条指令对应的所有二进制串都匹配为该指令。然而,由于一条指令中可能会有一些表示数据,寄存器或是条件的域(field);这些域本身可能取多个值。所以,与一条指令匹配的二进制串的数量可能很大。人工编写匹配代码和处理函数的工作量十分庞大。
然而,比较不同的指令集参考手册可以发现,虽然指令集有千差万别,但是描述指令的格式却几乎相同。这些格式均是由固定的位和可变的域组成。其中域有名称(若mode,reg或是direction),有一定的长度并且有一系列该域能匹配的二进制串组合。如何利用这种共性,以简化反汇编器的开发,是一个有意义的课题。
发明内容
利用上述处理器指令格式描述中的共性,本发明的目的在于提供一种优化反汇编器指令匹配的处理方法,可以精简地包含指令格式中所含的信息,并可利用该表示自动实现指令对应二进制串的展开和匹配。
本发明解决其技术问题所采用的技术方案是:
将匹配的规则表示为下述指令格式表示串:将指令中固定的二进制位用0和1的ASCII字符表示;对于指令中的域,用一个大括号界定且逗号分隔为三个子域的字符串表示;其中第一个子域为该域的名称;第二个子域为该域的长度;第三个子域为该域允许或不允许的二进制串匹配,其格式为:如果该子域为空,则表示所有可能的二进制串排列都可以匹配该域;如果该子域第一个字符是+,表示后面每一个长度为“域长度”的串都是可匹配该域的一个二进制串,且其中每一个串都是由0,1和*的ASCII字符组成的,分别表示相应位只与0,只与1和与0或1匹配;如果该子域第一个字符是-,表示后面每一个长度为“域长度”的串都是不可匹配该域的一个二进制串,其中每一个串的构成都如第一字符为+情况所述。
将所述的指令格式表示串扩展为指令格式表示串的展开二进制串:从左至右扫描指令格式表示串;对于未被大括号界定的字符,在相应位置产生字符表示的位;对于被大括号界定的域,在相应的位置区间产生长度为第二个子域的位组,其中每一个位串为第三个子域中允许的出现的位串:对于第三个子域为空的情况,产生所有位排列;对于第三个子域第一个字符为+的情况,产生能够匹配后面模式的所有位排列,即字符0产生0,字符1产生1,字符*产生0和1,分别对应两个位串;对于第三个子域第一个字符为-的情况,产生不能匹配后面模式的所有位排列。
用户建立指令格式表示串与指令处理回调函数的关联;反汇编器将指令格式表示串的展开二进制串与指令回调函数的关联;反汇编器工作时,直接将输入的二进制串与指令格式表示串的展开二进制串进行匹配;如果命中,则调用相应的回调函数,以进行进一步的指令解析;如果未命中,则说明该输入串不是合法指令串。
本发明具有的有益效果是:
1.指令格式的表示方法直观且精简。可由处理器的指令参考手册上描述的指令格式直接写出符合方法规定的表示,且能包含所需的所有信息。
2.表示展开的过程固定,无需针对不同平台分别编写。反汇编器编写者仅需将精力集中到指令回调函数的编写上,而且
3.利用本表示提供的信息,可以方便地在回调函数中使用域的名称引用域对应的串,方便回调函数的编写。
附图说明
图1是一条没有域的指令(自CPU32指令集)。
图2是一条有两个域的指令(自CPU32指令集)。
图3是指令格式表示串展开流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
图1是举了一个不含域的指令。由于指令格式表示串中将指令中固定的二进制位用0和1的ASCII字符表示;故符合本发明提出的该域的指令格式表示串为:
0100101011111010。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810061923.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:皮肤疾病治疗用旋切刀具
- 下一篇:一种生态畜牧业的生产调控方法