CN107861727A - 基于自动化编译JavaScript代码的智能混淆方法 - Google Patents

基于自动化编译JavaScript代码的智能混淆方法 Download PDF

Info

Publication number
CN107861727A
CN107861727A CN201711365855.4A CN201711365855A CN107861727A CN 107861727 A CN107861727 A CN 107861727A CN 201711365855 A CN201711365855 A CN 201711365855A CN 107861727 A CN107861727 A CN 107861727A
Authority
CN
China
Prior art keywords
code
automation
intelligence based
javascript
javascript code
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
Application number
CN201711365855.4A
Other languages
English (en)
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.)
Guangdong Industry Kaiyuan Science And Technology Co Ltd
Original Assignee
Guangdong Industry Kaiyuan Science And 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 Guangdong Industry Kaiyuan Science And Technology Co Ltd filed Critical Guangdong Industry Kaiyuan Science And Technology Co Ltd
Priority to CN201711365855.4A priority Critical patent/CN107861727A/zh
Publication of CN107861727A publication Critical patent/CN107861727A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (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

本发明公开了一种基于自动化编译JavaScript代码的智能混淆方法,包括以下步骤:常规的源码开发;代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;通过代码校验,配置代码重构的规则;根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;输出加密的安全代码。本发明用少量字符就能够完成任意字符串的编码,采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用,加强了前端代码的安全性的同时不会影响代码的正常执行。

Description

基于自动化编译JavaScript代码的智能混淆方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于自动化编译JavaScript代码的智能混淆方法。
背景技术
现代各种互联网的应用程序已经成为生活中不可缺少的部分,如各种网站、手机应用等等。互联网的应用程序给人们生活带来便利的同时,在背后也是隐藏着的是用户数据信息的安全、个人隐私等等问题。作为程序的开发者,基本的职业操守是需要对用户的信息安全做好把关,以防一些别有用心的人通过非法的技术手段去获取用户数据或者破坏程序。因此,对公众开放的程序采取保护措施是一个很有必要的研究。通过一些技术手段,如代码混淆加密,代码转译等等方式,可以提高程序的破译的难度,增强程序的健壮性。
近几年来html5的广泛应用,JavaScript的标准也得到各大浏览器的支持,但是针对JavaScript的代码安全研究并不是很多。目前主流的前端JavaScript安全方式是通过代码混淆的方式实现,但是由于前端JavaScript代码混淆的盖面没有得到很好的推广以及应用,导致目前仍然有很多网站、混合式开发的手机应用的前端JavaScript代码都是源代码状态,直接将代码暴露出来,很容易给别有用心的人去编译、破解等。而目前现有的代码混淆的研究,主要针对的是服务器端场景,也就是常说的后端,相对而言在客户端的JavaScript代码混淆研究比较少。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是提供一种基于自动化编译JavaScript代码的智能混淆方法,可以达到代码只能被计算机执行而不能被正常阅读,可以加强了前端代码的安全性的同时不会影响代码的正常执行。本技术在实际应用中可以结合工具库使用,方便开发人员应用在前端开发场景中。
为实现上述目的,本发明提供了一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:
步骤一:常规的源码开发;
步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;
步骤三:通过代码校验,配置代码重构的规则;
步骤四:根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;
步骤五:输出加密的安全代码。
上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤二引用代码规范校验工具进行代码校验具体为:用不限于JSHint的代码校验工具进行校验。
上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四引用对应的工具库包括但不限于uglifyjs.js、rewritejs.js。
上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四对代码文件进行重构编写为:利用少量字符构造精简的匿名函数对字符串进行编码。
上述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述少量字符包括但不限于“!”“+”“(”“)”“[”“]”。
本发明的有益效果是:
本发明运用了JavaScript语言中可以利用少量字符构造精简的匿名函数方法对于字符串进行编码的方式,其中少量字符包括“!”“+”“(”“)”“[”“]”,只用这些字符就能够完成任意字符串的编码,采取了保护代码的逻辑不被他人理解的方法,对JavaScript代码进行混淆,达到了有效保护JavaScript代码的目的,同时防止JavaScript代码被盗用,加强了前端代码的安全性的同时不会影响代码的正常执行。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的流程图。
具体实施方式
如图1所示,一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:
步骤一:常规的源码开发;
步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验。因为代码编写重构对源码质量有依赖,源码质量越高,重构出错的概率就越低,为了保证输出,所以代码校验这一个步骤需要增加。
步骤三:通过代码校验,配置代码重构的规则。因为我们最终的目标是将源码加密混淆,尽最大的可能将逻辑思维暴露出去,所以在实际应用中,出了应用本发明中的代码重构之外,也会配合组合主流的混淆加密方法,如流程混淆、命名混淆、添加脏代码。
步骤四:根据配置好的加密方式,引用对应的工具库,如uglifyjs.js、rewritejs.js,本发明用rewritejs.js执行自动化构建,对代码文件进行重构。
本发明中JavaScript编写方法是借鉴了代码混淆技术的思维,是采用了代码重构的方式进行加密的方式。代码重构编写技术主要是将JavaScript代码用一些难以读懂而且而且毫无规律的字符代替,但是不会影响到代码的执行。核心原理是运用了JavaScript语言中可以利用少量字符构造精简的匿名函数方法对于字符串进行编码的方式,其中少量字符包括“!”“+”“(”“)”“[”“]”,只用这些字符就能够完成任意字符串的编码。
以下通过举例如果通过特殊编写方式将JavaScript中的数字“0”构建出来作为例子,阐述本发明的核心原理以及技巧:
步骤一:用浏览器执行一下函数:alert([function(){alert(1)}()]),可以看到浏览器窗口会先弹出一个内容是1的窗口,然后接着会弹出一个空白的窗口。原因是函数先执行了一次alert(1)(表象是出现内容为1的弹窗),接着就执行了alert(函数)(表象是出现空白的弹窗)。
由此可以看出[function(){alert(1)}()]这个匿名函数是返回了自身函数,而通过alert的表现所执行出来的是一个空白,不能表示出来的字符(可以类似于void),而不是undefined值(如果没有返回,则alert弹出的窗口会是undefined的字符串)。
步骤二:修改一下执行的函数为alert([]),用浏览器执行,我们可以发现出现表象是出现一个空白的弹窗,由此证明“[]”也是一个匿名函数,而且是是返回了一个不能表示的字符。通过这样的演示可以看出“[]”可以返回是一个匿名函数的“空壳”。
步骤三:修改一下函数alert(+[]),用浏览器执行,我们可以发现得到的现象是弹出一个内容是0的弹窗,这样可以证明+[]得出的结果是数字0(如果用typeof(+[])我们可以得出结果是’number’)。原因是,通过运算符“+”,可以将将无法显示出来的空(void)强制转换成数字类型0。基于JavaScript的这类型的语法技巧,我们就将“数字0”用“+[]”表达出来了。
如此类推,我们运用这些技巧,构建出更多的数字。
运用这列的技巧以及JavaScript的代码特性,通过运用运算符“+”,逻辑运算符“!”的计算特性,可以构建出更多基础类型。
举例一部分转码的对比表,如下表格显示:
基础类型 转码
false ![]
true !![]
undefined [][[]]
NaN +[![]]
Infinity +(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])
Array []
Number (+[])
String ([]+[])
Boolean (![])
Function [][″filter″]
RegExp Function(″return/0/″)()
数字类型 转码
0 +[]
1 +!+[]
2 !+[]+!+[]
10 [+!+[]]+[+[]]
字符 转码
a (false+″″)[1]
b (+(11))[″toString″](20)
c ([][″filter″]+″″)[3]
d (undefined+″″)[2]
e (true+″″)[3]
f (false+″″)[0]
特殊字符 转码
(″″)[″fontcolor″]()[12]
Function(″return escape″)()(″<″)[0]
( (false+[][″filter″])[20]
) (true+[][″filter″])[20]
+ (+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]])+[])[2]
[[]][″concat″]([[]])+″″
. (+(+!+[]+[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[!+[]+!+[]]+[+[]])+[])[+!+[]]
通过转码表,我们可以看出JavaScript的代码完全就可以按照特殊字符进行编译书写。
例如正常的一段JavaScript代码:alert(1);,通过本发明的编写方式进行代码重构之后,就会转变成以下代码:
可以看出采用本发明的编码方式只能通过机器执行而不能阅读。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (5)

1.一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于,包括以下步骤:
步骤一:常规的源码开发;
步骤二:代码开发完成,并引用代码规范校验工具进行代码校验,例如JSHint等代码校验工具进行校验;
步骤三:通过代码校验,配置代码重构的规则;
步骤四:根据配置好的加密方式,引用对应的工具库,执行自动化构建,对代码文件进行重构编写;
步骤五:输出加密的安全代码。
2.如权利要求1所述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤二引用代码规范校验工具进行代码校验具体为:用不限于JSHint的代码校验工具进行校验。
3.如权利要求1所述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四引用对应的工具库包括但不限于uglifyjs.js、rewritejs.js。
4.如权利要求1所述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述步骤四对代码文件进行重构编写为:利用少量字符构造精简的匿名函数对字符串进行编码。
5.如权利要求4所述的一种基于自动化编译JavaScript代码的智能混淆方法,其特征在于:所述少量字符包括但不限于“!”“+”“(”“)”“[”“]”。
CN201711365855.4A 2017-12-18 2017-12-18 基于自动化编译JavaScript代码的智能混淆方法 Pending CN107861727A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711365855.4A CN107861727A (zh) 2017-12-18 2017-12-18 基于自动化编译JavaScript代码的智能混淆方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711365855.4A CN107861727A (zh) 2017-12-18 2017-12-18 基于自动化编译JavaScript代码的智能混淆方法

Publications (1)

Publication Number Publication Date
CN107861727A true CN107861727A (zh) 2018-03-30

Family

ID=61706430

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711365855.4A Pending CN107861727A (zh) 2017-12-18 2017-12-18 基于自动化编译JavaScript代码的智能混淆方法

Country Status (1)

Country Link
CN (1) CN107861727A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897572A (zh) * 2018-07-19 2018-11-27 北京理工大学 一种基于变量关联树的复杂类型重构方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
CN103150493A (zh) * 2013-02-28 2013-06-12 浙江中控技术股份有限公司 一种JavaScript代码的混淆方法和装置
CN105447342A (zh) * 2014-08-28 2016-03-30 阿里巴巴集团控股有限公司 脚本加密方法、解密方法及引擎
CN105450662A (zh) * 2015-12-25 2016-03-30 小米科技有限责任公司 加密方法及装置
CN106095681A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 一种SVN集成JSHint代码检测方法及其系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101807239A (zh) * 2010-03-29 2010-08-18 山东高效能服务器和存储研究院 一种防止源代码反编译的方法
CN103150493A (zh) * 2013-02-28 2013-06-12 浙江中控技术股份有限公司 一种JavaScript代码的混淆方法和装置
CN105447342A (zh) * 2014-08-28 2016-03-30 阿里巴巴集团控股有限公司 脚本加密方法、解密方法及引擎
CN105450662A (zh) * 2015-12-25 2016-03-30 小米科技有限责任公司 加密方法及装置
CN106095681A (zh) * 2016-06-14 2016-11-09 深圳市彬讯科技有限公司 一种SVN集成JSHint代码检测方法及其系统

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897572A (zh) * 2018-07-19 2018-11-27 北京理工大学 一种基于变量关联树的复杂类型重构方法
CN108897572B (zh) * 2018-07-19 2020-09-15 北京理工大学 一种基于变量关联树的复杂类型重构方法

Similar Documents

Publication Publication Date Title
CA2906475C (en) Method and apparatus for substitution scheme for anonymizing personally identifiable information
CN104038502B (zh) 一种验证方法及系统
Wright et al. Do you see your password? Applying recognition to textual passwords
CN103678962B (zh) 管理个人信息的方法、装置及终端
Mohamed An improved algorithm for information hiding based on features of Arabic text: A Unicode approach
CN103294959B (zh) 一种抗统计分析的文本信息隐藏方法
CN103164698A (zh) 指纹库生成方法及装置、待测文本指纹匹配方法及装置
CN106778100B (zh) 基于安卓平台和ios平台的混淆编译方法及混淆编译器
Hamdan et al. AH4S: an algorithm of text in text steganography using the structure of omega network
US10706160B1 (en) Methods, systems, and articles of manufacture for protecting data in an electronic document using steganography techniques
Domain A review and open issues of diverse text watermarking techniques in spatial domain
CN107622208A (zh) 便签加密、解密方法及相关产品
Grosvald et al. Free from the Cover Text: A Human-generated Natural Language Approach to Text-based Steganography.
CN107861727A (zh) 基于自动化编译JavaScript代码的智能混淆方法
Ivasenko et al. Information Transmission Protection Using Linguistic Steganography With Arithmetic Encoding And Decoding Approach
CN102682248B (zh) 一种中文超短文本的水印嵌入和提取方法
CN114996708B (zh) 涉诈手机应用研判方法、装置、电子设备及存储介质
CN107085515A (zh) 个性化页面生成方法及装置
Abbott et al. Password differences based on language and testing of memory recall
Ahvanooey et al. CovertSYS: A systematic covert communication approach for providing secure end-to-end conversation via social networks
Abraham et al. “I’m Doing the Best I Can.” Understanding Technology Literate Older Adults’ Account Management Strategies
Su et al. User biometric information‐based secure method for smart devices
CN104243489B (zh) 一种提示用户Cookies安全性的方法及装置
CN110059481A (zh) 一种恶意网页检测方法及系统
Tiwari et al. A novel steganographic methodology for high capacity data hiding in executable files

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20180330