CN112182513A - JavaScript代码处理方法及装置 - Google Patents
JavaScript代码处理方法及装置 Download PDFInfo
- Publication number
- CN112182513A CN112182513A CN201910606388.2A CN201910606388A CN112182513A CN 112182513 A CN112182513 A CN 112182513A CN 201910606388 A CN201910606388 A CN 201910606388A CN 112182513 A CN112182513 A CN 112182513A
- Authority
- CN
- China
- Prior art keywords
- code
- javascript
- virtual machine
- bytecode
- target
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 131
- 230000006870 function Effects 0.000 claims description 135
- 230000008569 process Effects 0.000 claims description 34
- 238000010586 diagram Methods 0.000 description 5
- 238000012954 risk control Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009545 invasion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- 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
- 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
- G06F2009/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请公开了一种JavaScript代码处理方法,包括:获得用于提供目标业务功能的JavaScript源代码;按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;输出包含所述字节码的目标代码。采用所述方法,将需要被保护的JavaScript代码编译为操作码形式的字节码,以保证JavaScript代码不被轻易获取、破解,提高了安全程度。
Description
技术领域
本申请涉及计算机技术领域,具体涉及JavaScript代码处理方法及装置。
背景技术
目前互联网应用越来越丰富,随着浏览器性能和网速的提高,互联网前端设备也承载了重要的业务处理逻辑。所谓互联网前端设备,可以是终端应用,例如网页或客户端APP等。其中,JavaScript作为一种高级解释性语言,常用于实现前端设备的业务处理逻辑,提供业务功能。由于JavaScript为非编译型动态脚本语言,因此,JavaScript源代码能通过浏览器查看,执行流程能轻易被获取。如何保证核心JavaScript代码不被攻击者获取或者不被竞争对手很重要,尤其是提高前端设备的关键业务或风险控制业务中JavaScript代码的安全程度更加重要,比如登陆、注册、支付、交易等业务。
现有技术中,JavaScript代码的安全方案有如下几种:1、压缩代码,重写函数名及形式参数;如果业务处理过程中需要依赖特定名称的代码,则该方案不适用。2、添加额外的分支代码对源代码的执行流程进行模糊化处理;该方案中存在与业务无关的流程代码,因此增加了代码的尺寸。3、禁止针对JavaScript代码进行调试;该方案中,由于攻击者能看到反调试的代码,可以轻易去掉反调试代码,因而安全程度低。4、针对前端设备代码,采用私有算法进行加密以及解密处理。该方案中,由于加密以及解密算法能被获得,因此可能通过调试分析出加解密流程,所以安全程度低。上述安全方案能够在一定程度上增加攻击者的攻击难度,但是,存在如下缺陷:不能完全隐藏掉真实代码和执行流程,因此,安全程度低。
因此,如何对JavaScript核心代码进行加密混淆处理,以保证不被轻易获取、破解,提高安全程度,是需要解决的问题。
发明内容
本申请提供的JavaScript代码处理方法,将JavaScript代码编译为操作码形式的字节码,以保证JavaScript代码不被轻易获取、破解,提高了安全程度。
本申请提供一种JavaScript代码处理方法,包括:
获得用于提供目标业务功能的JavaScript源代码;
按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;
输出包含所述字节码的目标代码。
可选的,还包括:生成特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于处理所述目标代码的进程虚拟机。
可选的,所述生成特定JavaScript虚拟机,包括:采用编译型计算机语言生成用于处理所述目标代码的进程虚拟机;所述进程虚拟机为能在浏览器中执行的二进制程序;
将所述进程虚拟机作为所述特定JavaScript虚拟机。
可选的,还包括:输出所述特定JavaScript虚拟机。
可选的,还包括:按照预设操作码解释规则生成操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令。
可选的,还包括:生成用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑的桥文件;其中,所述桥文件能被所述浏览器JavaScript引擎加载执行;所述目标代码包含的业务处理逻辑,为根据JavaScript源代码包含的用于提供目标业务功能的处理逻辑生成的字节码形式的业务处理逻辑。
可选的:获得所述JavaScript源代码包含的业务处理逻辑对应的源代码函数签名信息;根据所述源代码函数签名信息,得到所述桥文件包括的JavaScript函数的函数签名信息。
可选的,所述桥文件包括的JavaScript函数,包括下述代码:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码。
可选的,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码。
可选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
可选的,还包括:输出所述桥文件。
本申请还提供另一种JavaScript代码处理方法,包括:
获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码;
调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
可选的,还包括:获得特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于调用所述目标代码的进程虚拟机;
所述调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
可选的,还包括:获得按照预设操作码解释规则生成的操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令;
所述使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:使用操作码转换器将所述目标代码包含的字节码解释为所述特定JavaScript虚拟机能识别执行的指令;
使用所述特定JavaScript虚拟机执行所述指令,按照所述指令对应的业务处理逻辑进行处理,提供目标业务功能。
可选的,还包括:获得能被浏览器JavaScript引擎加载执行的桥文件,所述桥文件用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑;其中,所述桥文件包括的JavaScript函数的函数签名信息,与所述JavaScript源代码包含的业务处理逻辑对应的源代码函数的函数签名信息一致;
所述使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑。
可选的,所述桥文件包括:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码;
所述根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑,包括:根据所述桥文件的黑盒执行环境代码以及所述特定JavaScript虚拟机,得到黑盒执行环境实例;
通过浏览器JavaScript引擎以及所述特定JavaScript虚拟机,执行所述方法调用代码,调用所述黑盒执行环境实例的入口方法,所述入口方法按照所述目标代码包含的字节码对应的业务处理逻辑进行处理;
通过浏览器JavaScript引擎执行所述结果输出代码,收集所述入口方法的调用结果,将所述调用结果作为所述业务处理逻辑的执行结果。
可选的,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码;
所述根据所述桥文件的黑盒执行环境代码,以及特定JavaScript虚拟机,得到黑盒执行环境实例,包括:通过所述特定JavaScript虚拟机,加载所述加载代码,调用浏览器编译接口执行所述编译代码,得到所述黑盒执行环境实例。
可选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
可选的,还包括:获得所述目标代码包括的字节码,根据所述字节码得到操作码;
所述调用所述黑盒执行环境实例的入口方法,包括:使用所述操作码作为所述入口方法的参数,调用所述入口方法。
可选的,还包括:将执行所述业务处理逻辑的执行结果,输出给浏览器JavaScript引擎。
本申请还提供一种JavaScript代码处理装置,包括:
源代码获得单元,用于获得用于提供目标业务功能的JavaScript源代码;
字节码生成单元,用于按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;
输出单元,用于输出包含所述字节码的目标代码。
本申请还提供一种JavaScript代码处理装置,包括:
目标代码获得单元,用于获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码;
执行单元,用于调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
与现有技术相比,本申请具有以下优点:
本申请提供的一种JavaScript代码处理方法及装置,通过按照预设操作码生成规则,将JavaScript源代码编译成操作码形式的字节码,包含所述字节码的目标代码不能被轻易获取、破解,提高了JavaScript代码的安全程度。
本申请提供的一种JavaScript代码处理方法及装置,通过获得包含字节码的目标代码,调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。由于字节码不能被轻易获取、破解,因此包含所述字节码的目标代码隐藏了JavaScript源代码,安全程度比较高。进一步,通过特定JavaScript虚拟机调用所述目标代码,隐藏了执行流程,提高了使用JavaScript代码的前端设备的安全程度。
附图说明
图1是现有技术中调用JavaScript代码的系统环境示意图;
图2本申请第一实施例提供的一种调用JavaScript代码的系统环境示意图;
图3本申请第一实施例提供的一种调用JavaScript代码的系统环境示意图;
图4是本申请第一实施例提供的一种JavaScript代码处理方法的处理流程图;
图5是本申请第二实施例提供的一种JavaScript代码处理方法的处理流程图;
图6是本申请第二实施例提供的一种JavaScript代码的调用流程图;
图7是本申请第三实施例提供的一种JavaScript代码处理装置示意图;
图8是本申请第四实施例提供的一种JavaScript代码处理装置示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请提供一种JavaScript代码处理方法及装置。本申请还涉及另一种JavaScript代码处理方法及装置。在下面的实施例中逐一进行详细说明。
为便于理解,首先给出现有技术中调用JavaScript代码的系统环境,以及所述JavaScript代码处理方法提供的受保护的JavaScript代码的调用的系统环境。
请参考图1,图中,JavaScript核心代码101为用于提供业务功能的JavaScript源代码。浏览器JavaScript虚拟机102为执行所述JavaScript源代码的浏览器JavaScript虚拟机(JavaScript Virtual Machine,或JavaScript VM)。实际应用中,前端设备从网站服务端设备(或后端设备)获得JavaScript源代码,由浏览器JavaScript引擎加载执行所述JavaScript源代码。所谓JavaScript引擎是专门处理JavaScript脚本的进程虚拟机,往往附带在网页浏览器中,用于解释和执行JavaScript脚本代码,例如,Mozilla浏览器的SpiderMonkey引擎;chrome浏览器的V8引擎。由于Javascript语言是非编译型的动态脚本语言,任何用户都可以通过浏览器查看Javascript的源码文件并了解其执行流程。因此,关键业务或者风险控制业务的JavaScript源代码需要进行安全保护。
请参考图2,图中包括三部分,JavaScript核心代码201为被保护的用于提供业务功能的JavaScript源代码。私有JavaScript虚拟机202为读取被保护的JavaScript源代码进行业务逻辑处理的特定JavaScript虚拟机。浏览器JavaScript引擎203为获取私有JavaScript虚拟机执行结果,根据业务逻辑处理结果进行通用处理,提供业务功能。私有JavaScript虚拟机以黑盒形式为被保护的JavaScript代码提供黑盒执行环境。进一步,JavaScript核心代码可以是编译得到的操作码(OP Code)形式的字节码,相应的,私有JavaScript虚拟机中需要相应的操作码转换器(OP Code Transform)将操作码解释为私有JavaScript虚拟机能识别的指令。再请参考图3,图中,JavaScript核心代码301为需要保护的JavaScript源代码,转换为操作码302,操作码为二进制码,由二进制操作码逆向得到源代码的难度非常高,因此安全程度高。私有JavaScript虚拟机303读取操作码,将执行结果输出给浏览器JavaScript引擎304,最终提供业务功能。
本申请第一实施例提供一种JavaScript代码处理方法,可部署于提供JavaScript源代码加密保护的设备,例如用于网站服务端设备或后端设备。
以下结合图4对第一实施例提供的一种JavaScript代码处理方法进行说明。
图4所示的JavaScript代码处理方法,包括:步骤S401至步骤S403。
步骤S401,获得用于提供目标业务功能的JavaScript源代码。
所述JavaScript源代码为需要被保护的JavaScript源代码。由于JavaScript源代码能够承载越来越多的业务处理逻辑,其中也包含一些重要的关键业务或者风险控制业务。例如,登陆、注册、支付、交易等业务中,可能包含需要被保护的核心JavaScript代码。如果这些核心JavaScript代码不加保护处理,则前端设备浏览器读取执行这些核心JavaScript代码过程中,存在被攻击者破解或者被竞争对手获取使用的风险。为了提高JavaScript核心代码的安全程度,需要对核心代码进行加密混淆处理以保证不被轻易获取、破解。
实际应用中,所述JavaScript源代码包含用于实现业务处理逻辑以提供业务目标功能的JavaScript语言实现的函数。JavaScript代码中的函数,可以由函数签名信息标识。所谓函数签名信息,为函数的声明信息,例如,函数参数信息、函数返回值信息以及调用约定信息等。
本实施例中,可以由提供JavaScript源代码加密保护的设备获得用于提供目标业务功能的JavaScript源代码。例如,在前端设备获得需要安全保护的JavaScript源代码之前,由网站服务端设备或后端设备获得所述JavaScript源代码,以便后续步骤针对所述JavaScript源代码进行保护处理。
步骤S402,按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码。
本实施例中,将被保护的用于提供业务功能的JavaScript源代码,编译为操作码形式的字节码。具体的,可以使用专门编写的私有操作码编译器编译所述JavaScript源代码中需要保护的提供核心业务处理逻辑的核心代码,得到所述操作码形式的字节码。所谓操作码,为面向机器的二进制流,能够隐藏源代码的执行细节。由二进制操作码逆向得到源代码的难度非常高,因此安全程度高。例如,可以是如下形式:
0010#表示将0压入堆栈
0101#表示加法
0111#表示将1压入堆栈。
本实施例的一个实施方式中,通过特定JavaScript虚拟机调用被保护的JavaScript源代码进行业务逻辑处理。优选的,特定JavaScript虚拟机为私有JavaScript虚拟机,以黑盒形式为需要保护的JavaScript源代码提供黑盒执行环境。通过不透明的JavaScript执行环境隐藏JavaScript代码的执行过程,使得无法通过浏览器调试工具进行调试跟踪,提高了安全程度。具体包括下述处理:生成特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于处理所述目标代码的进程虚拟机。优选的,采用编译型计算机语言生成用于处理所述目标代码的进程虚拟机;所述进程虚拟机为能在浏览器中执行的二进制程序;将所述进程虚拟机作为所述特定JavaScript虚拟机。例如,选用WebAssembly技术规范实现所述特定JavaScript虚拟机,具体可以由C、C++、Go中的至少一种编译型语言生成可以在浏览器里直接执行的二进制程序,逆向难度较高。另外,WebAssembly的执行效率也比较高。
本实施例的一个实施方式中,还包括:输出所述特定JavaScript虚拟机。例如,将所述特定JavaScript虚拟机提供给用于提供目标业务功能的前端设备。
本实施例的一个实施方式中,将用于提供业务功能的JavaScript源代码中需要保护的代码部分,编译为操作码形式的字节码,得到包含所述字节码的目标代码,以所述特定JavaScript虚拟机调用所述目标代码,实现目标业务功能。这样,既通过字节码使得需要保护的JavaScript源代码不直接可见且难破解,又能通过使用所述特定JavaScript虚拟机隐藏执行过程,因此,提高了前端设备JavaScript代码的安全程度。针对根据JavaScript源代码编译得到的操作码形式的字节码,标准的JavaScript虚拟机不能进行解释执行,因此增加在所述特定JavaScript虚拟机中增加操作码解释器(或操作码转换器)。所述操作码解释器为专门编写的私有转换器,能将操作码转换为所述特定JavaScript虚拟机可以识别并执行的指令,由所述JavaScript虚拟机执行所述指令得到业务处理逻辑的执行结果。具体的,还包括下述处理:按照预设操作码解释规则生成操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令。优选的,所述预设操作码解释规则,为能够将上述操作码形式的字节码对应为JavaScript代码的规则。
本实施例的一个实施方式中,提供核心业务处理逻辑的JavaScript源代码已编译成操作码形式的字节码,还需要生成桥文件,用于其他代码调用所述字节码提供的核心业务处理逻辑。所谓桥文件,是一个JavaScript文件,能够运行在浏览器的JavaScript引擎执行环境中,充当所述特定JavaScript虚拟机与浏览器标准的JavaScript引擎之间交互的桥梁。具体包括:生成用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑的桥文件;其中,所述桥文件能被所述浏览器JavaScript引擎加载执行;所述目标代码包含的业务处理逻辑,为根据JavaScript源代码包含的用于提供目标业务功能的处理逻辑生成的字节码形式的业务处理逻辑。例如,所述桥文件可以为根据需要被保护的JavaScript源代码的编译信息生成的JavaScript文件。
优选的,所述桥文件中函数的函数签名与核心JavaScript源代码中对应函数的函数签名一致,因此,其他代码能直接调用桥文件中的函数,实际执行时被调用函数的函数体为操作码形式的字节码,例如,为符合WebAssembly技术规范的函数。具体包括下述处理:获得所述JavaScript源代码包含的业务处理逻辑对应的源代码函数签名信息;根据所述源代码函数签名信息,得到所述桥文件包括的JavaScript函数的函数签名信息。由于桥文件中声明的Javascript函数函数签名与被编译为字节码的核心JavaScript源代码的函数签名一致,因此,其他业务代码不用修改就能通过桥文件调用所述核心JavaScript源代码提供的业务处理逻辑,能够最大程度降低对其他业务代码的侵入。
本实施例中,所述桥文件包括的JavaScript函数,包括下述代码:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码。
其中,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码。
优选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为符合WebAssembly技术规范的编译接口。
实际运行中,编译得到的操作码形式的字节码,作为参数传入到被调用的黑盒执行环境实例上的入口方法。调用所述入口方法得到的执行结果作为调用核心JavaScript源代码对应的业务处理逻辑的输出结果。
本实施例的一个实施方式中,还包括:输出所述桥文件。例如,提供给前端设备,以便前端设备加载网站执行被保护的JavaScript源代码使用。
步骤S403,输出包含所述字节码的目标代码。
本实施例中,将所述包含所述字节码的目标代码提供给前端设备,以便前端设备加载网站能执行由被保护的JavaScript源代码提供的业务处理逻辑。其中,所述目标代码,不需要修改被保护的核心JavaScript源代码的业务处理流程。按照预设操作码生成规则编译得到的操作码形式的字节码的代码尺寸不大于被保护的JavaScript源文件。
至此,对本实施例提供的JavaScript代码处理方法进行了详细说明,所述方法通过将需要保护的JavaScript源代码编译为操作码形式的字节码,使得所述JavaScript源代码不能被轻易获取、破解,提高了安全程度,同时也不增加代码尺寸。进一步,通过提供特定JavaScript虚拟机隐藏被保护的JavaScript源代码的执行过程,使得无法通过浏览器调试跟踪被保护的JavaScript源代码的业务流程,提供了前端设备运行JavaScript代码的安全机制。
以上述实施例为基础,本申请第二实施例提供一种JavaScript代码处理方法。
以下结合图5和图6对第二实施例提供的JavaScript代码处理方法进行说明,相关部分请参见上述实施例对应部分的说明。
图5所示的JavaScript代码处理方法,包括:步骤S501至步骤S502。
步骤S501,获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码。
所述JavaScript源代码为需要被保护的JavaScript源代码。由于JavaScript源代码能够承载越来越多的业务处理逻辑,其中也包含一些重要的关键业务或者风险控制业务。例如,登陆、注册、支付、交易等业务中,可能包含需要被保护的核心JavaScript代码。如果这些核心JavaScript代码不加保护处理,则前端设备浏览器读取执行这些核心JavaScript代码过程中,存在被攻击者破解或者被竞争对手获取使用的风险。为了提高JavaScript核心代码的安全程度,需要对核心代码进行加密混淆处理以保证不被轻易获取、破解。具体到本实施例,由执行所述目标代码的前端设备从提供JavaScript源代码加密保护的设备获得所述目标代码。其中,所述目标代码包含字节码,具体为:针对所述JavaScript源代码中提供核心业务处理逻辑的核心代码,使用特定编译器根据预设操作码生成规则进行编译,得到的操作码形式的字节码。所谓特定编译器可以为使用专门编写的私有操作码编译器。所述字节码为二进制操作码,隐藏了源代码的执行细节,不直接可见且难破解。由二进制操作码逆向得到源代码的难度非常高,因此安全程度高。例如,可以是如下形式:
0010#表示将0压入堆栈
0101#表示加法
0111#表示将1压入堆栈。
实际应用中,所述JavaScript源代码包含用于实现业务处理逻辑以提供业务目标功能的JavaScript语言实现的函数。JavaScript代码中的函数,可以由函数签名信息标识。所谓函数签名信息,为函数的声明信息,例如,函数参数信息、函数返回值信息以及调用约定信息等。
本实施例中,所述前端设备通过特定JavaScript虚拟机调用所述目标代码,提供目标业务功能。其中,所述目标代码包含针对被保护的JavaScript源代码编译得到的字节码,所述字节码中包含了需要保护的核心的业务处理逻辑。优选的,特定JavaScript虚拟机为私有JavaScript虚拟机,以黑盒形式为需要保护的JavaScript源代码,即所述目标代码,提供黑盒执行环境。通过不透明的JavaScript执行环境隐藏JavaScript源代码中业务处理逻辑的执行过程,使得无法通过浏览器调试工具针对所述业务处理逻辑进行调试跟踪,提高了安全程度。具体的,还包括下述处理:获得特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于调用所述目标代码的进程虚拟机;使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。例如,所述特定JavaScript虚拟机,为采用编译型计算机语言生成用于处理所述目标代码的进程虚拟机;所述进程虚拟机为能在浏览器中执行的二进制程序;将所述进程虚拟机作为所述特定JavaScript虚拟机。再如,选用WebAssembly技术规范实现所述特定JavaScript虚拟机,具体可以由C、C++、Go中的至少一种编译型语言生成可以在浏览器里直接执行的二进制程序,提高逆向获得特定JavaScript虚拟机的源代码的难度。另外,WebAssembly的执行效率也比较高。
本实施例的一个实施方式中,所述目标代码包含对应于需要保护的JavaScript源代码的字节码。由于字节码为针对根据JavaScript源代码编译得到的操作码形式的字节码,因此,标准的JavaScript虚拟机需要增加操作码解释器(或操作码转换器)。所述操作码解释器为专门编写的私有转换器,能将操作码转换为所述特定JavaScript虚拟机可以识别并执行的指令,由所述JavaScript虚拟机执行所述指令得到业务处理逻辑的执行结果。具体的,还包括下述处理:获得按照预设操作码解释规则生成的操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令;
使用操作码转换器将所述目标代码包含的字节码解释为所述特定JavaScript虚拟机能识别执行的指令;
使用所述特定JavaScript虚拟机执行所述指令,按照所述指令对应的业务处理逻辑进行处理,提供目标业务功能。
其中,所述预设操作码解释规则,为能够将上述操作码形式的字节码对应为JavaScript代码的规则。
本实施例中,还需要获得桥文件,用于其他业务代码调用所述字节码提供的核心业务处理逻辑。所谓桥文件,是一个JavaScript文件,能够运行在浏览器的JavaScript引擎执行环境中,充当所述特定JavaScript虚拟机与浏览器标准的JavaScript引擎之间交互的桥梁。例如,桥文件可以为根据需要被保护的JavaScript源代码的编译信息生成的JavaScript文件。
本实施例的一个实施方式中,所述桥文件中函数的函数签名信息,为根据核心JavaScript源代码中对应函数的函数签名信息生成的函数签名信息,因此,能够通过桥文件中包含的函数签名信息,关联到核心JavaScript源代码中对应的函数签名信息。从而,其他代码能通过桥文件中的函数签名信息调用对应的核心JavaScript源代码中的函数。优选的,所述桥文件中函数的函数签名与核心JavaScript源代码中对应函数的函数签名一致,因此,其他业务代码不用修改就能通过桥文件调用所述核心JavaScript源代码提供的业务处理逻辑,最大程度降低了对其他业务代码的侵入。其他代码直接调用桥文件中的函数,实际执行时被调用函数的函数体则为操作码形式的字节码,例如,为符合WebAssembly技术规范的函数。具体的,还包括下述处理:获得能被浏览器JavaScript引擎加载执行的桥文件,所述桥文件用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑;其中,所述桥文件包括的JavaScript函数的函数签名信息,与所述JavaScript源代码包含的业务处理逻辑对应的源代码函数的函数签名信息一致;根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑。步骤S502,调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
本实施例中,使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。进一步,为了使得其他业务代码能够调用所述字节码提供的核心业务处理逻辑,还包括获得桥文件。具体的,包括下述处理:根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑。其中,所述桥文件包括:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码。
相应的,所述根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑,包括:
根据所述桥文件的黑盒执行环境代码以及所述特定JavaScript虚拟机,得到黑盒执行环境实例;
通过浏览器JavaScript引擎以及所述特定JavaScript虚拟机,执行所述方法调用代码,调用所述黑盒执行环境实例的入口方法,所述入口方法按照所述目标代码包含的字节码对应的业务处理逻辑进行处理;
通过浏览器JavaScript引擎执行所述结果输出代码,收集所述入口方法的调用结果,将所述调用结果作为所述业务处理逻辑的执行结果。
本实施例的一个实施方式中,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码;
相应的,所述根据所述桥文件的黑盒执行环境代码,以及特定JavaScript虚拟机,得到黑盒执行环境实例,包括:通过所述特定JavaScript虚拟机,加载所述加载代码,调用浏览器编译接口执行所述编译代码,得到所述黑盒执行环境实例。
本实施例的一个实施方式中,还包括:获得所述目标代码包括的字节码,根据所述字节码得到操作码;使用所述操作码作为所述入口方法的参数,调用所述入口方法。
优选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
本实施例的一个实施方式中,通过桥文件将执行所述业务处理逻辑的执行结果,输出给浏览器JavaScript引擎。
请参考图6,图中示出了一种JavaScript代码的调用流程。图中,操作码和桥文件为使用特定操作码编译器,根据需要被保护的JavaScript源代码得到。前端设备不能获取需要被保护的JavaScript源代码,而是获取所述操作码以及桥文件。所述操作码为针对需要被保护的JavaScript源代码编译得到的二进制流,由二进制流难以逆向得到需要被保护的JavaScript源代码的业务处理逻辑,因此攻击者难以破解或者获取。所述桥文件为根据需要被保护的JavaScript源代码的编译信息生成的JavaScript文件,包含函数签名信息,但是不提供函数签名信息对应的被调用函数的函数体的业务处理逻辑。前端设备能够根据操作码以及桥文件执行需要被保护JavaScript源代码对应的业务处理逻辑。具体包括:
S601,获得操作码;
S602,使用特定操作码转换器将所述操作码转换为特定JavaScript虚拟机能识别并执行的指令;
S603,特定JavaScript虚拟机执行转换后的操作码;
S604,获得桥文件,通过桥文件获得特定JavaScript虚拟机执行转换后的操作码得到的执行结果;
S605,其他业务代码调用桥文件中的函数,获得特定JavaScript虚拟机执行转换后的操作码得到的执行结果。
至此,对本实施例提供的JavaScript代码处理方法进行了详细说明,所述方法通过调用包含字节码的目标代码,所述字节码为需要保护的JavaScript源代码编译的二进制操作码,因此,所述JavaScript源代码不能被轻易获取、破解,提高了安全程度。进一步,通过获得特定JavaScript虚拟机隐藏被保护的JavaScript源代码的执行过程,使得无法通过浏览器调试跟踪被保护的JavaScript源代码的业务流程,提供了前端设备运行JavaScript代码的安全机制。
与第一实施例对应,本申请第三实施例提供一种JavaScript代码处理装置。以下结合图7对第三实施例提供的装置进行说明。
图7所示的JavaScript代码处理装置,包括:
源代码获得单元701,用于获得用于提供目标业务功能的JavaScript源代码;
字节码生成单元702,用于按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;
输出单元703,用于输出包含所述字节码的目标代码。
可选的,所述装置还包括特定JavaScript虚拟机生成单元,所述特定JavaScript虚拟机生成单元用于:
生成特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于处理所述目标代码的进程虚拟机。
可选的,所述特定JavaScript虚拟机生成单元,具体用于:采用编译型计算机语言生成用于处理所述目标代码的进程虚拟机;所述进程虚拟机为能在浏览器中执行的二进制程序;
将所述进程虚拟机作为所述特定JavaScript虚拟机。
可选的,所述特定JavaScript虚拟机生成单元,还用于:输出所述特定JavaScript虚拟机。
可选的,所述特定JavaScript虚拟机生成单元,还用于:按照预设操作码解释规则生成操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令。
可选的,所述装置还包括桥文件生成单元,所述桥文件生成单元用于:生成用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑的桥文件;其中,所述桥文件能被所述浏览器JavaScript引擎加载执行;所述目标代码包含的业务处理逻辑,为根据JavaScript源代码包含的用于提供目标业务功能的处理逻辑生成的字节码形式的业务处理逻辑。
可选的,所述桥文件生成单元,具体用于:获得所述JavaScript源代码包含的业务处理逻辑对应的源代码函数签名信息;
根据所述源代码函数签名信息,得到所述桥文件包括的JavaScript函数的函数签名信息。
可选的,所述桥文件包括的JavaScript函数,包括下述代码:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码。
可选的,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码。
可选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
可选的,所述桥文件生成单元,还用于:输出所述桥文件。
与第二实施例对应,本申请第四实施例提供另一种JavaScript代码处理装置。以下结合图8对第四实施例提供的装置进行说明。
图8所示的JavaScript代码处理装置,包括:
目标代码获得单元801,用于获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码;
执行单元802,用于调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
可选的,所述装置还包括特定JavaScript虚拟机获得单元,所述特定JavaScript虚拟机获得单元用于:获得特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于调用所述目标代码的进程虚拟机;
所述执行单元802,具体用于:使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
可选的,所述特定JavaScript虚拟机获得单元,还用于:获得按照预设操作码解释规则生成的操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令;
所述执行单元802,具体用于:使用操作码转换器将所述目标代码包含的字节码解释为所述特定JavaScript虚拟机能识别执行的指令;
使用所述特定JavaScript虚拟机执行所述指令,按照所述指令对应的业务处理逻辑进行处理,提供目标业务功能。
可选的,所述装置还包括桥文件获得单元,所述桥文件获得单元用于:获得能被浏览器JavaScript引擎加载执行的桥文件,所述桥文件用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑;其中,所述桥文件包括的JavaScript函数的函数签名信息,与所述JavaScript源代码包含的业务处理逻辑对应的源代码函数的函数签名信息一致;
所述执行单元802,具体用于:根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑。
可选的,所述桥文件包括:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码;
所述执行单元802,具体用于:根据所述桥文件的黑盒执行环境代码以及所述特定JavaScript虚拟机,得到黑盒执行环境实例;
通过浏览器JavaScript引擎以及所述特定JavaScript虚拟机,执行所述方法调用代码,调用所述黑盒执行环境实例的入口方法,所述入口方法按照所述目标代码包含的字节码对应的业务处理逻辑进行处理;
通过浏览器JavaScript引擎执行所述结果输出代码,收集所述入口方法的调用结果,将所述调用结果作为所述业务处理逻辑的执行结果。
可选的,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码;
所述执行单元802,具体用于:通过所述特定JavaScript虚拟机,加载所述加载代码,调用浏览器编译接口执行所述编译代码,得到所述黑盒执行环境实例。
可选的,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
可选的,所述执行单元802,具体用于:获得所述目标代码包括的字节码,根据所述字节码得到操作码;使用所述操作码作为所述入口方法的参数,调用所述入口方法。
可选的,所述执行单元802,还用于:将执行所述业务处理逻辑的执行结果,输出给浏览器JavaScript引擎。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (22)
1.一种JavaScript代码处理方法,其特征在于,包括:
获得用于提供目标业务功能的JavaScript源代码;
按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;
输出包含所述字节码的目标代码。
2.根据权利要求1所述的方法,其特征在于,还包括:
生成特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于处理所述目标代码的进程虚拟机。
3.根据权利要求2所述的方法,其特征在于,所述生成特定JavaScript虚拟机,包括:采用编译型计算机语言生成用于处理所述目标代码的进程虚拟机;所述进程虚拟机为能在浏览器中执行的二进制程序;
将所述进程虚拟机作为所述特定JavaScript虚拟机。
4.根据权利要求2所述的方法,其特征在于,还包括:输出所述特定JavaScript虚拟机。
5.根据权利要求2所述的方法,其特征在于,还包括:按照预设操作码解释规则生成操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令。
6.根据权利要求1所述的方法,其特征在于,还包括:生成用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑的桥文件;其中,所述桥文件能被所述浏览器JavaScript引擎加载执行;所述目标代码包含的业务处理逻辑,为根据JavaScript源代码包含的用于提供目标业务功能的处理逻辑生成的字节码形式的业务处理逻辑。
7.根据权利要求6所述的方法,其特征在于,还包括:获得所述JavaScript源代码包含的业务处理逻辑对应的源代码函数签名信息;
根据所述源代码函数签名信息,得到所述桥文件包括的JavaScript函数的函数签名信息。
8.根据权利要求7所述的方法,其特征在于,所述桥文件包括的JavaScript函数,包括下述代码:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码。
9.根据权利要求8所述的方法,其特征在于,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码。
10.根据权利要求9所述的方法,其特征在于,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
11.根据权利要求6所述的方法,其特征在于,还包括:输出所述桥文件。
12.一种JavaScript代码处理方法,其特征在于,包括:
获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码;
调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
13.根据权利要求12所述的方法,其特征在于,还包括:获得特定JavaScript虚拟机,所述特定JavaScript虚拟机,为用于调用所述目标代码的进程虚拟机;
所述调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
14.根据权利要求13所述的方法,其特征在于,还包括:获得按照预设操作码解释规则生成的操作码转换器,所述操作码转换器用于将所述目标代码解释为所述特定JavaScript虚拟机能识别执行的指令;
所述使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:使用操作码转换器将所述目标代码包含的字节码解释为所述特定JavaScript虚拟机能识别执行的指令;
使用所述特定JavaScript虚拟机执行所述指令,按照所述指令对应的业务处理逻辑进行处理,提供目标业务功能。
15.根据权利要求13所述的方法,其特征在于,还包括:获得能被浏览器JavaScript引擎加载执行的桥文件,所述桥文件用于浏览器JavaScript引擎调用所述目标代码包含的业务处理逻辑;其中,所述桥文件包括的JavaScript函数的函数签名信息,与所述JavaScript源代码包含的业务处理逻辑对应的源代码函数的函数签名信息一致;
所述使用所述特定JavaScript虚拟机调用所述目标代码,执行所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能,包括:根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑。
16.根据权利要求15所述的方法,其特征在于,所述桥文件包括:
用于初始化所述特定JavaScript虚拟机以得到黑盒执行环境实例的黑盒执行环境代码;
用于调用所述黑盒执行环境实例的入口方法的方法调用代码;
用于获得调用所述入口方法的调用结果,并输出所述调用结果的结果输出代码;
所述根据所述桥文件以及所述特定JavaScript虚拟机,调用所述目标代码包含的字节码,执行所述字节码对应的业务处理逻辑,包括:根据所述桥文件的黑盒执行环境代码以及所述特定JavaScript虚拟机,得到黑盒执行环境实例;
通过浏览器JavaScript引擎以及所述特定JavaScript虚拟机,执行所述方法调用代码,调用所述黑盒执行环境实例的入口方法,所述入口方法按照所述目标代码包含的字节码对应的业务处理逻辑进行处理;
通过浏览器JavaScript引擎执行所述结果输出代码,收集所述入口方法的调用结果,将所述调用结果作为所述业务处理逻辑的执行结果。
17.根据权利要求16所述的方法,其特征在于,所述黑盒执行环境代码,包括:用于加载所述黑盒执行环境代码的加载代码;
用于调用浏览器编译接口编译所述黑盒执行环境代码的编译代码;
所述根据所述桥文件的黑盒执行环境代码,以及特定JavaScript虚拟机,得到黑盒执行环境实例,包括:通过所述特定JavaScript虚拟机,加载所述加载代码,调用浏览器编译接口执行所述编译代码,得到所述黑盒执行环境实例。
18.根据权利要求17所述的方法,其特征在于,所述黑盒执行环境代码为wasm文件;所述浏览器编译接口为WebAssembly规范的编译接口。
19.根据权利要求16所述的方法,其特征在于,还包括:获得所述目标代码包括的字节码,根据所述字节码得到操作码;
所述调用所述黑盒执行环境实例的入口方法,包括:使用所述操作码作为所述入口方法的参数,调用所述入口方法。
20.根据权利要求16所述的方法,其特征在于,还包括:将执行所述业务处理逻辑的执行结果,输出给浏览器JavaScript引擎。
21.一种JavaScript代码处理装置,其特征在于,包括:
源代码获得单元,用于获得用于提供目标业务功能的JavaScript源代码;
字节码生成单元,用于按照预设操作码生成规则,将至少一部分所述JavaScript源代码编译成操作码形式的字节码;
输出单元,用于输出包含所述字节码的目标代码。
22.一种JavaScript代码处理装置,其特征在于,包括:
目标代码获得单元,用于获得包含字节码的目标代码;所述字节码,为根据预设操作码生成规则针对用于提供目标业务功能的JavaScript源代码进行编译得到的操作码形式的字节码;
执行单元,用于调用所述目标代码包含的字节码,根据所述字节码对应的业务处理逻辑提供目标业务功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910606388.2A CN112182513A (zh) | 2019-07-05 | 2019-07-05 | JavaScript代码处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910606388.2A CN112182513A (zh) | 2019-07-05 | 2019-07-05 | JavaScript代码处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112182513A true CN112182513A (zh) | 2021-01-05 |
Family
ID=73918730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910606388.2A Pending CN112182513A (zh) | 2019-07-05 | 2019-07-05 | JavaScript代码处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112182513A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170024230A1 (en) * | 2014-03-31 | 2017-01-26 | Yunpeng Li | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
CN108614960A (zh) * | 2018-05-11 | 2018-10-02 | 西北大学 | 一种基于前端字节码技术的JavaScript虚拟化保护方法 |
CN109684794A (zh) * | 2018-12-07 | 2019-04-26 | 成都盈海益讯科技有限公司 | 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质 |
-
2019
- 2019-07-05 CN CN201910606388.2A patent/CN112182513A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170024230A1 (en) * | 2014-03-31 | 2017-01-26 | Yunpeng Li | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine |
CN106548046A (zh) * | 2016-10-25 | 2017-03-29 | 北京深思数盾科技股份有限公司 | 一种保护代码的装置和方法 |
CN108614960A (zh) * | 2018-05-11 | 2018-10-02 | 西北大学 | 一种基于前端字节码技术的JavaScript虚拟化保护方法 |
CN109684794A (zh) * | 2018-12-07 | 2019-04-26 | 成都盈海益讯科技有限公司 | 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
知乎用户CCCPGX: "前端核心代码保护技术面面观", 前端外刊评论, pages 3 - 6 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733988B (zh) | 安卓平台上可执行程序的保护方法 | |
CN108932406B (zh) | 虚拟化软件保护方法和装置 | |
US8090959B2 (en) | Method and apparatus for protecting .net programs | |
US10592263B2 (en) | Emulating mixed-code programs using a virtual machine instance | |
CN106462677B (zh) | 一种保护软件项目的方法和装置 | |
CN110414261B (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
US8589897B2 (en) | System and method for branch extraction obfuscation | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
Lu et al. | Automatic simplification of obfuscated JavaScript code: A semantics-based approach | |
EP3062256B1 (en) | Flexible instructions sets for obfuscated virtual machines | |
EP3262557A1 (en) | A method to identify known compilers functions, libraries and objects inside files and data items containing an executable code | |
Ďurfina et al. | Design of a retargetable decompiler for a static platform-independent malware analysis | |
Lu et al. | DeepAutoD: Research on distributed machine learning oriented scalable mobile communication security unpacking system | |
CN112597454A (zh) | 代码混淆方法、代码运行方法、装置、介质与设备 | |
Kim et al. | Avengers, Assemble! survey of WebAssembly security solutions | |
Liang et al. | Deobfuscation of virtualization-obfuscated code through symbolic execution and compilation optimization | |
Lan et al. | Lambda obfuscation | |
CN114416097A (zh) | 应用程序加固方法、系统、设备及存储介质 | |
You et al. | Deoptfuscator: Defeating Advanced Control-Flow Obfuscation Using Android Runtime (ART) | |
CN113626773B (zh) | 一种基于中间语言的代码保护方法 | |
Guo et al. | A survey of obfuscation and deobfuscation techniques in android code protection | |
Wang et al. | Leveraging WebAssembly for numerical JavaScript code virtualization | |
CN112182513A (zh) | JavaScript代码处理方法及装置 | |
Zhan et al. | Securing Operating Systems Through Fine-Grained Kernel Access Limitation for IoT Systems | |
CN114090964A (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 |