CN106503496A - 基于操作码替换与合并的Python脚本程序防逆转方法 - Google Patents

基于操作码替换与合并的Python脚本程序防逆转方法 Download PDF

Info

Publication number
CN106503496A
CN106503496A CN201611122610.4A CN201611122610A CN106503496A CN 106503496 A CN106503496 A CN 106503496A CN 201611122610 A CN201611122610 A CN 201611122610A CN 106503496 A CN106503496 A CN 106503496A
Authority
CN
China
Prior art keywords
code
operation code
files
python
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.)
Granted
Application number
CN201611122610.4A
Other languages
English (en)
Other versions
CN106503496B (zh
Inventor
顾乃杰
王小强
陈悟
王岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quanzhou Shanyuantang Technology Co ltd
Original Assignee
HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd filed Critical HEFEI COMJAY INFORMATION TECHNOLOGY Co Ltd
Priority to CN201611122610.4A priority Critical patent/CN106503496B/zh
Publication of CN106503496A publication Critical patent/CN106503496A/zh
Application granted granted Critical
Publication of CN106503496B publication Critical patent/CN106503496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种基于操作码替换与合并的Python脚本程序防逆转方法,包括:1分析Python解释器、虚拟机中操作码的生成和执行逻辑;2更改操作码映射(opcode.h)单元;3分析编译生成的字节码文件中操作码序列中的基本块信息;4定义新的操作码;5更改窥孔优化(peephole.h)单元,对处于同一个基本块中的两个(或者两个以上的)操作码进行合并为一个新的操作码;6更改虚拟机(ceval.h)单元,以支持对新操作码的解释执行;7Python虚拟机判定操作码值,从操作码值得知是替换与合并之后的操作码,采用对应的解释过程对其进行解释执行;8Python脚本程序正常执行。

Description

基于操作码替换与合并的Python脚本程序防逆转方法
技术领域
本发明涉及软件代码保护技术领域,具体地说是一种基于单表代替密码与Playfair密码的虚拟机操作码替换与合并的Python脚本程序防逆转方法。
背景技术
Python脚本程序是使用Python脚本语言开发的应用程序。使用python脚本语言开发的应用程序(app.py)首先要通过Python脚本编译器将其编译为具有特定结构的字节码文件(app.pyc),让后将字节码文件(app.pyc)发布给客户运行。
使用Python脚本语言开发的应用编译生成的字节码(.pyc)文件,不是针对特定处理器和系统的二进制文件,而是针对Python虚拟机(Python Virtual Machine)的具有特定的结构和特征的文件,其保留了Python源码文件中的全部信息。
而目前使用Python脚本语言开发的应用程序容易被攻击者反编译为源码文件,对开发者和用户造成损失,这些都字节码文件的组织格式有关。字节码文件中最重要的一个属性域就是操作码序列,其中包含了对程序执行逻辑的控制,和对程序中各个参数的执行的操作等信息,因此对操作码序列的保护显得尤为重要。
发明内容
本发明是为了克服现有Python程序防逆转技术存在的不足之处,提供一种基于操作码替换与合并的Python脚本程序防逆转方法,以期能为字节码文件提供安全性高的保护措施,并提升Python应用程序的运行效率。
本发明为达到上述发明目的,采用如下技术方案:
本发明一种基于操作码替换与合并的Python脚本程序防逆转方法,是应用于Python源码文件中,所述Python源码文件中包含opcode.h文件、peephole.c文件和ceval.c文件:所述操作码为所述opcode.h文件中的n个自然数;所述n个自然数分别对应于n个虚拟机操作;
定义所述n个虚拟机操作的集合为:OP={op1,op2,…,opi,…,opn},opi表示第i个虚拟机操作;
定义所述n个操作码的集合为CODE={code1,code2,…,codei,…,coden},codei表示第i个操作码,且第i个虚拟机操作opi对应于第i个操作码codei;所述n个操作码分为带参数的操作码和不带参数的操作码,假设所有不带参数的操作码为前a个操作码,即{code1,code2,…,codea};所有带参数的操作码为剩余n-a个操作码,即{codea+1,codea+2,…,coden},1≤i≤n;
定义操作码序列S是一串由m个操作码和k个参数组成的序列;
定义基本块为所述操作码序列S中若干个顺序执行的操作码所构成的子序列;
定义所述操作码序列S的基本块信息BS是一个长度为m的序列;所述基本块信息BS中的每个元素与所述操作码序列S中的m个操作码一一对应,所述基本块信息BS中的每个元素值为其对应的操作码在所述操作码序列S中的基本块序号;其特点是,所述Python脚本程序防逆转方法是按如下步骤进行:
步骤1、替换操作;
步骤1.1、在所述前a个操作码{code1,code2,…,codea}中去除和“SLICE”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有不带参数的操作码的新子集sub1
步骤1.2、在所述剩余n-a个带参数的操作码{codea+1,codea+2,…,coden}中去除和“FUNCTION”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有带参数的操作码的新子集sub2
步骤1.3、由所有不带参数的操作码的新子集sub1和所有带参数的操作码的新子集sub2构成操作码替换的集合,记为CODE′={code′1,code′2,…,code′i,…,code′n},code′i表示第i个操作的替换码,所述操作码替换的集合CODE′中至少存在一个元素不属于所述n个操作码的集合CODE;
步骤1.4、在所述opcode.h文件中利用所述操作码替换的集合CODE′替换所述n个操作码的集合CODE;
步骤2、合并操作
步骤2.1、从字节码文件中提取所述操作码序列S和基本块信息BS并进行分析,得到操作码对在所述字节码文件中出现频率的降序排序;
步骤2.2、选取排序为前W个的操作码对,将前W个的操作码对中每一个操作码对(codei,codej)进行合,形成一个新的操作码codei+j;1≤i≠j≤n;
步骤2.2.1、在所述opcode.h文件添加所述前W个的操作码对的定义和语义信息;
步骤2.2.2、在所述peephole.c文件中添加对所述前W个的操作码的合并过程;
步骤2.2.3、在所述ceval.c文件中添加对所述前W个的操作码的解释过程;
步骤3、利用gcc重新编译经上述步骤1-步骤2形成的新的Python源码文件,生成新的Python脚本运行环境new_python,作为Python脚本程序的防逆转环境。
与已有技术相比,本发明有益效果体现在:
1、一种基于单表代替密码的虚拟机操作码替换的Python脚本程序防逆转方法,在不影响Python应用的运行结果的前提下,使用新的操作码CODE′对来的操作的语义信息进行隐藏,防止他人进行反编译,为Python脚本程序提供较强的安全保障。
2、本发明提出的Python应用程序防逆转方法,将同在一个基本块中的操作码序列进行合并,使得用一个新操作码就可以蕴含原来多个操作码的语义信息,不但对操作码序列中的语义信息进行了隐藏,而且有效减少了操作码序中操作码的个数,从而缩短了操作码序列的长度,改变了操作码序列的内容和结构,大大增加了字节码文件的安全性,并且使得Python应用程序执行效率增加了%5左右、应用大小减少了1.5%左右。
附图说明
图1为本发明操作码替换示意图;
图2为本发明操作码序列经操作码替换前后示意图;
图3为本发明操作码合并过程示意图;
图4为本发明操作码序列经操作码合并前后示意图;
图5为本发明操作码序列经操作码替换与合并前后示意图。
具体实施方式
下面结合附图通过具体实施例对本发明基于单表代替密码和Playfair密码的虚拟机操作码替换与合并的Python脚本程序防逆转方法做进一步的详细说明。
本实施例中,一种基于操作码替换与合并的Python脚本程序防逆转方法,是应用于Python源码文件中,这些Python源码文件中包含操作码映射opcode.h文件、窥孔优化peephole.c文件和虚拟机ceval.c文件;操作码为opcode.h文件中定义的n个自然数;这n个自然数分别对应于ceval.c文件中涉及到的n个虚拟机操作;
定义n个虚拟机操作的集合为:OP={op1,op2,…,opi,…,opn},opi表示第i个虚拟机操作,为LOAD_CONST、STORE_NAME等具有特定语义信息的操作;
定义n个操作码的集合为CODE={code1,code2,…,codei,…,coden},codei表示第i个操作码,且第i个虚拟机操作opi对应于第i个操作码codei;1≤i≤n;n个操作码分为带参数的操作码和不带参数的操作码,假设所有不带参数的操作码为前a个操作码,即{code1,code2,…,codea};所有带参数的操作码为剩余n-a个操作码,即{codea+1,codea+2,…,coden},具体的说,在Python-2.7.9中,如果codei<90,则codei为不带参数的操作码,如果90≤codei≤147,则codei为带参数的操作码,1≤i≤n;
定义第i个虚拟机操作opi到第i个操作码codei的映射关系为:map(opi)=codei
定义操作码序列S是一串由m个操作码和k个参数组成的一个型如下面所示的序列;
其中的两个参数,可以为空,1≤j≤m;
定义基本块为操作码序列S中若干个顺序执行的操作码所构成的子序列,即由JUMP_FORWARD、CONTINUE_LOOP等跳转、循环控制操作码链接的操做不属于同一基本块中;
定义操作码序列S的基本块信息BS是一个形如下面所示的长度为m的序列;基本块信息BS中的每个元素valj与在操作码序列S中的m个操作码一一对应,基本块信息BS中的每个元素valj的值为其对应的操作码在操作码序列S中的基本块的序号;
BS=[val1,val2,...,valj,...,valm]
本实施例中的Python脚本程序防逆转方法是按如下步骤进行:
步骤1、替换操作;
步骤1.1、在前a个操作码{code1,code2,…,codea}中去除和“SLICE”相关的操作码后,具体有SLICE、STORE_SLICE、DELETE_SLICE对应的操作码值,将剩余的操作码的顺序进行随机交换,得到所有不带参数的操作码的新子集sub1
步骤1.2、在剩余n-a个带参数的操作码{codea+1,codea+2,…,coden}中去除和“FUNCTION”相关的操作码后,具体有CALL_FUNCTION、MAKE_FUNCTION、CALL_FUNCTION_VAR、CALL_FUNCTION_KW、CALL_FUNCTION_VAR_KW对应的操作码值,将剩余的操作码的顺序进行随机交换,得到所有带参数的操作码的新子集sub2
步骤1.3、由所有不带参数的操作码的新子集sub1和所有带参数的操作码的新子集sub2构成操作码替换的集合,记为CODE′={code1′,code′2,…,code′i,…,code′n},codei′表示第i个操作的替换码,操作码替换的集合CODE′中至少存在一个元素不属于n个操作码的集合CODE;
步骤1.4、如图1所示,在opcode.h文件中利用操作码替换的集合CODE′替换操作码的集合CODE,即可完成图2所示的S到S'的转换;
步骤2、合并操作
步骤2.1、按图3所示的流程,从大量的字节码文件中提取操作码序列S和基本块信息BS并进行分析,寻找BS中能使valr=valr+1的r,能使vals=vals+1的s…,即寻找S中可以合并的操作码对(opr,opr+1),(ops,ops+1)…,并按这些(opr,opr+1),(ops,ops+1)…出现的频率进行降序排序,得到操作码对在字节码文件中出现频率的降序排序;
步骤2.2、选取排序为前W个的操作码对,将前W个的操作码对中任意每一个操作码对(codei,codej)进行合,形成一个新的操作码codei+j,如图4所示,从而完成将操作码序列S到S″的转换,1≤i≠j≤n;
步骤2.2.1、在opcode.h文件添加前W个的操作码对的定义和语义信息;
步骤2.2.2、在peephole.c文件中添加对前W个的操作码的合并过程;
步骤2.2.3、在ceval.c文件中添加对前W个的操作码的解释过程;
步骤3、利用gcc重新编译经上述步骤1-步骤2形成的新的Python源码文件,生成新的Python脚本运行环境new_python,作为Python脚本程序的防逆转环境,防逆转环境new_python编译脚本文件(app.py),最终生成包含如图5中S″'所示的操作码序列的字节码文件(app.pyc),字节码文件(app.pyc)能够被new_python正确解释执行,且现有的反编译工具不能反编译出字节码文件(app.pyc)中的源代码的。

Claims (1)

1.一种基于操作码替换与合并的Python脚本程序防逆转方法,是应用于Python源码文件中,所述Python源码文件中包含opcode.h文件、peephole.c文件和ceval.c文件:所述操作码为所述opcode.h文件中的n个自然数;所述n个自然数分别对应于n个虚拟机操作;
定义所述n个虚拟机操作的集合为:OP={op1,op2,…,opi,…,opn},opi表示第i个虚拟机操作;
定义所述n个操作码的集合为CODE={code1,code2,…,codei,…,coden},codei表示第i个操作码,且第i个虚拟机操作opi对应于第i个操作码codei;所述n个操作码分为带参数的操作码和不带参数的操作码,假设所有不带参数的操作码为前a个操作码,即{code1,code2,…,codea};所有带参数的操作码为剩余n-a个操作码,即{codea+1,codea+2,…,coden},1≤i≤n;
定义操作码序列S是一串由m个操作码和k个参数组成的序列;
定义基本块为所述操作码序列S中若干个顺序执行的操作码所构成的子序列;
定义所述操作码序列S的基本块信息BS是一个长度为m的序列;所述基本块信息BS中的每个元素与所述操作码序列S中的m个操作码一一对应,所述基本块信息BS中的每个元素值为其对应的操作码在所述操作码序列S中的基本块序号;其特征是,所述Python脚本程序防逆转方法是按如下步骤进行:
步骤1、替换操作;
步骤1.1、在所述前a个操作码{code1,code2,…,codea}中去除和“SLICE”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有不带参数的操作码的新子集sub1
步骤1.2、在所述剩余n-a个带参数的操作码{codea+1,codea+2,…,coden}中去除和“FUNCTION”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有带参数的操作码的新子集sub2
步骤1.3、由所有不带参数的操作码的新子集sub1和所有带参数的操作码的新子集sub2构成操作码替换的集合,记为CODE′={code′1,code′2,…,code′i,…,code′n},code′i表示第i个操作的替换码,所述操作码替换的集合CODE′中至少存在一个元素不属于所述n个操作码的集合CODE;
步骤1.4、在所述opcode.h文件中利用所述操作码替换的集合CODE′替换所述n个操作码的集合CODE;
步骤2、合并操作
步骤2.1、从字节码文件中提取所述操作码序列S和基本块信息BS并进行分析,得到操作码对在所述字节码文件中出现频率的降序排序;
步骤2.2、选取排序为前W个的操作码对,将前W个的操作码对中每一个操作码对(codei,codej)进行合,形成一个新的操作码codei+j;1≤i≠j≤n;
步骤2.2.1、在所述opcode.h文件添加所述前W个的操作码对的定义和语义信息;
步骤2.2.2、在所述peephole.c文件中添加对所述前W个的操作码的合并过程;
步骤2.2.3、在所述ceval.c文件中添加对所述前W个的操作码的解释过程;
步骤3、利用gcc重新编译经上述步骤1-步骤2形成的新的Python源码文件,生成新的Python脚本运行环境new_python,作为Python脚本程序的防逆转环境。
CN201611122610.4A 2016-12-08 2016-12-08 基于操作码替换与合并的Python脚本程序防逆转方法 Active CN106503496B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611122610.4A CN106503496B (zh) 2016-12-08 2016-12-08 基于操作码替换与合并的Python脚本程序防逆转方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611122610.4A CN106503496B (zh) 2016-12-08 2016-12-08 基于操作码替换与合并的Python脚本程序防逆转方法

Publications (2)

Publication Number Publication Date
CN106503496A true CN106503496A (zh) 2017-03-15
CN106503496B CN106503496B (zh) 2019-03-19

Family

ID=58330008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611122610.4A Active CN106503496B (zh) 2016-12-08 2016-12-08 基于操作码替换与合并的Python脚本程序防逆转方法

Country Status (1)

Country Link
CN (1) CN106503496B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315930A (zh) * 2017-07-07 2017-11-03 成都恒高科技有限公司 一种保护Python程序的方法
CN108280329A (zh) * 2018-01-22 2018-07-13 台州风达机器人科技有限公司 一种用于软件运行的验证放行方法
CN108363911A (zh) * 2018-02-11 2018-08-03 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN110032838A (zh) * 2019-03-21 2019-07-19 深圳市腾讯信息技术有限公司 一种脚本文件加固方法、装置及设备
CN110378085A (zh) * 2019-07-30 2019-10-25 四川长虹电器股份有限公司 一种Python字节码防逆向方法
CN110717150A (zh) * 2019-10-08 2020-01-21 北京顶象技术有限公司 代码保护方法、装置、保护设备及可读存储介质
CN110929234A (zh) * 2019-11-28 2020-03-27 施羊梦燊 一种基于代码虚拟化的Python程序加密保护系统与方法
CN111045793A (zh) * 2020-03-13 2020-04-21 支付宝(杭州)信息技术有限公司 一种在虚拟机中执行功能模块的方法和装置
CN111310191A (zh) * 2020-02-12 2020-06-19 广州大学 一种基于深度学习的区块链智能合约漏洞检测方法
CN112926032A (zh) * 2021-03-26 2021-06-08 支付宝(杭州)信息技术有限公司 用于处理和运行字节码的方法、装置及字节码运行系统
CN113434874A (zh) * 2021-06-11 2021-09-24 湖南大学 一种基于pyc加密的Python源代码保护方法和系统
CN116089983A (zh) * 2023-02-23 2023-05-09 北京微步在线科技有限公司 一种py文件的加固编译方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1235311A (zh) * 1999-05-31 1999-11-17 北京航空航天大学 类比推理机系统
US20050034109A1 (en) * 2001-06-04 2005-02-10 Microsoft Corporation Method and system for program editing
CN101441571A (zh) * 2008-12-02 2009-05-27 南京大学 一种基于Python语言的网格系统实现方法
CN103885816A (zh) * 2014-03-28 2014-06-25 南京大学 一种实时嵌入式系统的仿真方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1235311A (zh) * 1999-05-31 1999-11-17 北京航空航天大学 类比推理机系统
US20050034109A1 (en) * 2001-06-04 2005-02-10 Microsoft Corporation Method and system for program editing
CN101441571A (zh) * 2008-12-02 2009-05-27 南京大学 一种基于Python语言的网格系统实现方法
CN103885816A (zh) * 2014-03-28 2014-06-25 南京大学 一种实时嵌入式系统的仿真方法

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315930A (zh) * 2017-07-07 2017-11-03 成都恒高科技有限公司 一种保护Python程序的方法
CN108280329B (zh) * 2018-01-22 2020-06-02 北京数科网维技术有限责任公司 一种用于软件运行的验证放行方法
CN108280329A (zh) * 2018-01-22 2018-07-13 台州风达机器人科技有限公司 一种用于软件运行的验证放行方法
CN108363911B (zh) * 2018-02-11 2021-10-29 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN108363911A (zh) * 2018-02-11 2018-08-03 西安四叶草信息技术有限公司 一种Python脚本混淆、水印的方法及装置
CN110032838A (zh) * 2019-03-21 2019-07-19 深圳市腾讯信息技术有限公司 一种脚本文件加固方法、装置及设备
CN110032838B (zh) * 2019-03-21 2023-05-12 深圳市腾讯信息技术有限公司 一种脚本文件加固方法、装置及设备
CN110378085A (zh) * 2019-07-30 2019-10-25 四川长虹电器股份有限公司 一种Python字节码防逆向方法
CN110717150A (zh) * 2019-10-08 2020-01-21 北京顶象技术有限公司 代码保护方法、装置、保护设备及可读存储介质
CN110929234A (zh) * 2019-11-28 2020-03-27 施羊梦燊 一种基于代码虚拟化的Python程序加密保护系统与方法
CN110929234B (zh) * 2019-11-28 2023-03-24 施羊梦燊 一种基于代码虚拟化的Python程序加密保护系统与方法
CN111310191B (zh) * 2020-02-12 2022-12-23 广州大学 一种基于深度学习的区块链智能合约漏洞检测方法
CN111310191A (zh) * 2020-02-12 2020-06-19 广州大学 一种基于深度学习的区块链智能合约漏洞检测方法
CN111045793A (zh) * 2020-03-13 2020-04-21 支付宝(杭州)信息技术有限公司 一种在虚拟机中执行功能模块的方法和装置
CN112926032A (zh) * 2021-03-26 2021-06-08 支付宝(杭州)信息技术有限公司 用于处理和运行字节码的方法、装置及字节码运行系统
CN113434874A (zh) * 2021-06-11 2021-09-24 湖南大学 一种基于pyc加密的Python源代码保护方法和系统
CN116089983A (zh) * 2023-02-23 2023-05-09 北京微步在线科技有限公司 一种py文件的加固编译方法及装置
CN116089983B (zh) * 2023-02-23 2024-03-26 北京微步在线科技有限公司 一种py文件的加固编译方法及装置

Also Published As

Publication number Publication date
CN106503496B (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
CN106503496A (zh) 基于操作码替换与合并的Python脚本程序防逆转方法
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
CN109445834B (zh) 基于抽象语法树的程序代码相似性快速比较方法
Park et al. Fuzzing javascript engines with aspect-preserving mutation
CN108614960B (zh) 一种基于前端字节码技术的JavaScript虚拟化保护方法
CN101894236B (zh) 基于摘要语法树和语义匹配的软件同源性检测方法及装置
CN107688748A (zh) 基于漏洞指纹的脆弱性代码克隆检测方法及其装置
CN109684838B (zh) 一种针对以太坊智能合约的静态代码审计系统及方法
CN110059176B (zh) 一种基于规则的通用文本信息抽取和信息生成方法
CN103226488B (zh) 一种形式化代码生成中的效率控制方法及装置
CN106293664A (zh) 代码生成方法及装置
CN101071378A (zh) 源代码生成方法、设备和程序
CN108345457A (zh) 一种对程序源代码自动生成功能描述性注释的方法
CN110543407B (zh) 一种Solidity智能合约性能静态分析方法
CN110515838A (zh) 基于主题模型软件缺陷检测的方法和系统
US20210365258A1 (en) Method and system for updating legacy software
CN109976806B (zh) 基于字节码序列匹配的Java语句块克隆检测方法
CN105260223B (zh) 一种scpi命令定义、解析、执行和测试的方法
Yu et al. Detecting java code clones based on bytecode sequence alignment
CN107515739A (zh) 提高代码执行性能的方法及装置
CN107479866A (zh) 基于重构技术实现开放终端应用数据与功能的方法
CN109816038B (zh) 一种物联网固件程序分类方法及其装置
CN106919403B (zh) 云环境下基于Java字节码的多粒度代码克隆检测方法
CN111190585B (zh) 基于字节码增强技术实现java模式匹配特性的方法
Zhang et al. Analysis of automatic code generation tools based on machine learning

Legal Events

Date Code Title Description
C06 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
TR01 Transfer of patent right

Effective date of registration: 20230707

Address after: Room 505, Building 2, Service Outsourcing Base, Information Industry Park, No. 6, Information Avenue, Longmen Town, Anxi County, Quanzhou City, Fujian Province, 362000

Patentee after: Quanzhou Yibanren Technology Co.,Ltd.

Address before: 230000 Comprehensive Building A526, Advanced Technology Research Institute, University of Science and Technology of China, at the intersection of Wangjiang West Road and Chuangxin Avenue, Hefei City, Anhui Province

Patentee before: HEFEI COMJAY INFORMATION TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230808

Address after: 2nd Floor, No. 17, Huaxi Road, Xihua Village, Chongwu Town, Huian County, Quanzhou City, Fujian Province, 362000

Patentee after: Quanzhou Shanyuantang Technology Co.,Ltd.

Address before: Room 505, Building 2, Service Outsourcing Base, Information Industry Park, No. 6, Information Avenue, Longmen Town, Anxi County, Quanzhou City, Fujian Province, 362000

Patentee before: Quanzhou Yibanren Technology Co.,Ltd.

TR01 Transfer of patent right