CN111176785B - 一种基于操作链接的机器指令码取词方法 - Google Patents
一种基于操作链接的机器指令码取词方法 Download PDFInfo
- Publication number
- CN111176785B CN111176785B CN201911214520.1A CN201911214520A CN111176785B CN 111176785 B CN111176785 B CN 111176785B CN 201911214520 A CN201911214520 A CN 201911214520A CN 111176785 B CN111176785 B CN 111176785B
- Authority
- CN
- China
- Prior art keywords
- machine instruction
- word
- instruction code
- tree
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000000605 extraction Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000003058 natural language processing Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 239000012466 permeate Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明实施例公开了一种基于操作链接的机器指令码取词方法,所述取词方法为:将机器指令码按照逻辑顺序进行相互链接,重构语句的顺序;每个机器指令码对应不同的目的操作数,目的操作数将对应相应的操作行为;对出现频率大的没有区别价值的机器指令码进行去除,得到链接指令树;在链接指令树上自树根向下遍历,进行取词。本发明解决了现有指令码取词方式单一,不能体现程序语言内在含义的问题。
Description
技术领域
本发明实施例涉及机器语言处理技术领域,具体涉及一种基于操作链接的机器指令码取词方法。
背景技术
自上世纪40年代现代数字计算机发明以来,人类创造了数量繁多的CPU,每个CPU系列都又一套指令体系。除此之外,计算机科学家和工程师们创造了众多的编程语言,其中有很多编程语言最终运行在专用的虚拟机之中。例如Java,Java程序被编译为JavaBytecode,Java Bytecode在Java虚拟机(JVM)中执行。在实践中,需要对这些经过编译的指令码进行分析,比如发现隐藏的恶意代码,比如软件版权保护,再比如软件家族溯源……显然,这项工作是浩大而艰难的。一个自然的想法是使用一些自动化的手段来帮助人工实施分析。
近年来,自然语言处理(Natural Language Processing,NLP)是人工智能应用的一个热点,在应用的过程中产生了很多基础技术,比如n-gram。随着人工智能技术向相关领域渗透和扩展,一些技术也在不同的领域中取得了新的发展。但是传统的N-gram没有考虑到函数的边界,也没有考虑到操作和操作之间的关联,传统的N-gram只能依据机器指令的自然顺序进行取词。
发明内容
为此,本发明实施例提供一种基于操作链接的机器指令码取词方法,以解决现有指令码取词方式单一,不能体现程序语言内在含义的问题。
为了实现上述目的,本发明实施例提供如下技术方案:
本发明实施例公开了一种基于操作链接的机器指令码取词方法,所述取词方法为:
将机器指令码按照逻辑顺序进行相互链接,重构语句的顺序;
每个机器指令码对应不同的目的操作数,目的操作数将对应相应的操作行为;
对出现频率大的没有区别价值的机器指令码进行去除,得到链接指令树;
在链接指令树上自树根向下遍历,进行取词。
进一步地,所述机器指令码利用参数链接方法进行转化,转化为指令和目的操作数相互关联的树状形式。
进一步地,所述参数链接方法为:根据计算机的机器指令的内在逻辑连接安排顺序,使链接后的机器指令码更贴合逻辑顺序。
进一步地,所述机器指令码利用一个参数存储结果,或者隐含使用某个寄存器存储结果作为结果参数,用来存储机器指令码的结果。
进一步地,所述结果参数作为整个操作的值,或者将存储结果的寄存器作为整个操作的值,后续有对结果参数的存取,则将整个机器指令码作为后续操作的参数。
进一步地,所述链接指令树中利用n-grams取词操作进行取词。
进一步地,所述n-grams取词操作为:从链接指令数的树根开始向下遍历,忽略叶子节点,其中n为取n个词,取词不跨越不同的子树。
进一步地,所述取词方法中,按照设定的取词个数根据逻辑顺序进行取词,取词结束后对取词结果进行输出。
本发明实施例具有如下优点:
本发明实施例公开了一种基于操作链接的机器指令码取词方法,借助机器指令码内在的逻辑,对机器指令码进行逻辑链接,重构了语句的顺序,得到链接指令树,在链接指令树上自树根向下遍历,进行取词,使取出的词组更加贴合程序的本质,在此基础上运用机器学习对程序的识别准确率得到提升。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其它的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。
图1为本发明实施例提供的一种基于操作链接的机器指令码取词方法的流程图;
图2为本发明实施例提供的一种基于操作链接的机器指令码取词方法的操作码链接示意图;
图3为本发明实施例提供的一种基于操作链接的机器指令码取词方法的操作码链接局部示意图;
图4为本发明实施例提供的一种基于操作链接的机器指令码取词方法的操作码链接局部示意图;
图5为本发明实施例提供的一种基于操作链接的机器指令码取词方法的操作码链接局部示意图;
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
本实施例公开了一种基于操作链接的机器指令码取词方法,所述取词方法为:
将机器指令码按照逻辑顺序进行相互链接,重构语句的顺序;
每个机器指令码对应不同的目的操作数,目的操作数将对应相应的操作行为;
对出现频率大的没有区别价值的机器指令码进行去除,得到链接指令树;
在链接指令树上自树根向下遍历,进行取词。
本实施例以具体的代码进行举例说明取词方法,操作程序为:
机器指令码为:
参考图2,根据操作码内在的联系对操作码进行链接操作,机器指令码利用参数链接方法进行转化,展现为指令和目的操作数相互关联的树状形式,参数链接方法为:根据计算机的机器指令的内在逻辑连接安排顺序,使链接后的机器指令码更贴合逻辑顺序。
机器指令码利用一个参数存储结果,或者隐含使用某个寄存器存储结果作为结果参数,用来存储机器指令码的结果,结果参数作为整个操作的值,或者将存储结果的寄存器作为整个操作的值,后续有对结果参数的存取,则将整个机器指令码作为后续操作的参数。比如:movl$0x1,-0x4(%rbp),得到图3,在其后加上“mov-0x4(%rbp),%eax”,得到图4。
在图2中,链接指令树中去除出现频率大的没有区别价值的机器指令码,利用n-grams取词操作进行取词,即图中编号为①、②、④、⑤、⑥、⑦、⑧的树。参考图5,仅存编号为③的树。然后在剩余的树上进行n-gram取词操作,n-grams取词操作为:从链接指令数的树根开始向下遍历,忽略叶子节点,其中n为取n个词。
以取2-gram为例,得到:(mov,add),(add,mov),(mov,movl),取词结束后对取词结果进行输出。
本发明实施例公开的一种基于操作链接的机器指令码取词方法,借助机器指令码内在的逻辑,对机器指令码进行逻辑链接,重构了语句的顺序,得到链接指令树,在链接指令树上自树根向下遍历,进行取词,使取出的词组更加贴合程序的本质,运用机器学习对程序的识别准确率得到提升。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (6)
1.一种基于操作链接的机器指令码取词方法,其特征在于,所述取词方法为:
将机器指令码按照逻辑顺序进行相互链接,重构语句的顺序;
每个机器指令码对应不同的目的操作数,目的操作数将对应相应的操作行为;
对出现频率大的没有区别价值的机器指令码进行去除,得到链接指令树;
在链接指令树上自树根向下遍历,进行取词;
所述机器指令码利用参数链接方法进行转化,转化为指令和目的操作数相互关联的树状形式;
所述参数链接方法为:根据计算机的机器指令的内在逻辑连接安排顺序,使链接后的机器指令码更贴合逻辑顺序。
2.如权利要求1所述的一种基于操作链接的机器指令码取词方法,其特征在于,所述机器指令码利用一个参数存储结果,或者隐含使用某个寄存器存储结果作为结果参数,用来存储机器指令码的结果。
3.如权利要求2所述的一种基于操作链接的机器指令码取词方法,其特征在于,所述结果参数作为整个操作的值,或者将存储结果的寄存器作为整个操作的值,后续有对结果参数的存取,则将整个机器指令码作为后续操作的参数。
4.如权利要求1所述的一种基于操作链接的机器指令码取词方法,其特征在于,所述链接指令树中利用n-grams取词操作进行取词。
5.如权利要求4所述的一种基于操作链接的机器指令码取词方法,其特征在于,所述n-grams取词操作为:从链接指令数的树根开始向下遍历,忽略叶子节点,其中n为取n个词,取词不跨越不同的子树。
6.如权利要求1所述的一种基于操作链接的机器指令码取词方法,其特征在于,所述取词方法中,按照设定的取词个数根据逻辑顺序进行取词,取词结束后对取词结果进行输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911214520.1A CN111176785B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的机器指令码取词方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911214520.1A CN111176785B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的机器指令码取词方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111176785A CN111176785A (zh) | 2020-05-19 |
CN111176785B true CN111176785B (zh) | 2023-08-29 |
Family
ID=70648832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911214520.1A Active CN111176785B (zh) | 2019-12-02 | 2019-12-02 | 一种基于操作链接的机器指令码取词方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111176785B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62217325A (ja) * | 1986-03-18 | 1987-09-24 | Nec Corp | アセンブラコ−ド最適化方式 |
CN101957772A (zh) * | 2009-07-16 | 2011-01-26 | 北京中电华大电子设计有限责任公司 | 一种具有轻量级比较指令生成的编译器 |
CN102063328A (zh) * | 2010-12-17 | 2011-05-18 | 北京控制工程研究所 | 一种用于检测中断驱动型程序数据竞争的系统 |
CN106021040A (zh) * | 2016-05-04 | 2016-10-12 | 中国人民解放军国防科学技术大学 | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 |
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110023008A1 (en) * | 2009-07-27 | 2011-01-27 | Sankhya Technologies Private Limited | Method for optimizing an architectural model of a microprocessor |
-
2019
- 2019-12-02 CN CN201911214520.1A patent/CN111176785B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62217325A (ja) * | 1986-03-18 | 1987-09-24 | Nec Corp | アセンブラコ−ド最適化方式 |
CN101957772A (zh) * | 2009-07-16 | 2011-01-26 | 北京中电华大电子设计有限责任公司 | 一种具有轻量级比较指令生成的编译器 |
CN102063328A (zh) * | 2010-12-17 | 2011-05-18 | 北京控制工程研究所 | 一种用于检测中断驱动型程序数据竞争的系统 |
CN106021040A (zh) * | 2016-05-04 | 2016-10-12 | 中国人民解放军国防科学技术大学 | 一种基于线形汇编指令差异性变换的dsp软错误检测方法 |
CN108121565A (zh) * | 2016-11-28 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 生成指令集编码的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111176785A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107704382B (zh) | 面向Python的函数调用路径生成方法和系统 | |
Thomas et al. | Using automated fix generation to secure SQL statements | |
CN106843849B (zh) | 一种基于文档的库函数的代码模型的自动合成方法 | |
CN103455471B (zh) | 一种将文本解析成键值对的方法和装置 | |
CN113900923B (zh) | 一种跨指令集架构的二进制函数相似性检查系统及方法 | |
CN107515739B (zh) | 提高代码执行性能的方法及装置 | |
CN106547743B (zh) | 一种进行翻译的方法及其系统 | |
CN107967152B (zh) | 基于最小分支路径函数胎记的软件局部抄袭证据生成方法 | |
CN108197027B (zh) | 软件性能优化方法、可存储介质、计算机、计算机程序 | |
CN107784026A (zh) | 一种etl数据处理方法及装置 | |
CN101299192A (zh) | 一种非对齐访存的处理方法 | |
CN109614103A (zh) | 一种基于字符的代码补全方法及系统 | |
RU2003112679A (ru) | Аппаратная трансляция команд внутри процессорного конвейера | |
CN108027748A (zh) | 指令集模拟器及其模拟器生成方法 | |
CN107153535A (zh) | 一种操作ElasticSearch的方法及装置 | |
US8407678B2 (en) | Method of array interception using data-flow analysis | |
CN113536308B (zh) | 软件基因视角下多粒度信息融合的二进制代码溯源方法 | |
CN113190234B (zh) | 针对区块链智能合约函数签名自动化恢复的方法及系统 | |
CN111176785B (zh) | 一种基于操作链接的机器指令码取词方法 | |
CN111124414B (zh) | 一种基于操作链接的抽象语法树取词方法 | |
US20180253287A1 (en) | Method for translation of assembler computer language to validated object-oriented programming language | |
Murawski et al. | A contextual equivalence checker for IMJ | |
DE102019105418B3 (de) | Verfahren zum Erzeugen einer Darstellung einer Programmlogik, Dekompiliervorrichtung, Rekompiliersystem und Computerprogrammprodukte | |
JP3318051B2 (ja) | 翻訳処理方法 | |
CN114816435A (zh) | 一种基于逆向技术的软件开发方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |