CN111368265A - 一种适用于electron的加密方法 - Google Patents

一种适用于electron的加密方法 Download PDF

Info

Publication number
CN111368265A
CN111368265A CN202010104846.5A CN202010104846A CN111368265A CN 111368265 A CN111368265 A CN 111368265A CN 202010104846 A CN202010104846 A CN 202010104846A CN 111368265 A CN111368265 A CN 111368265A
Authority
CN
China
Prior art keywords
file
asar
gsar
electron
key
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
CN202010104846.5A
Other languages
English (en)
Other versions
CN111368265B (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.)
Gf Securities Co ltd
Original Assignee
Gf Securities 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 Gf Securities Co ltd filed Critical Gf Securities Co ltd
Priority to CN202010104846.5A priority Critical patent/CN111368265B/zh
Publication of CN111368265A publication Critical patent/CN111368265A/zh
Application granted granted Critical
Publication of CN111368265B publication Critical patent/CN111368265B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Abstract

本发明公开了一种适用于electron的加密方法,包括步骤:通过对asar文件加密,得到gsar文件;以所述的gsar文件为依据,获取支持加载所述gsar文件的electron的源代码;关闭调试工具并拒绝运行所述调试工具;当所述electron启动后,在加载文件的过程中会进行初始化操作。它实现了代码的加密,防止用户拿到源代码并实施篡改,并且防止用户自行打开调试工具,对软件实施破解。

Description

一种适用于electron的加密方法
技术领域
本发明涉及electron客户端编程技术,尤其涉及一种适用于electron的加密方法。
背景技术
Electron是一个时下流行的桌面客户端开发技术。它使用chromium作为UI界面的绘图库,javascript作为业务逻辑的编程语言。它的出现使开发人员可以使用熟悉的web技术开发桌面客户端软件。这样一套代码可以运行在浏览器上,也可以打包为客户端软件。它推动了桌面客户端技术出现了飞跃。使用Electron的常用的软件包括vscode,slack等。
然而electron技术由于它是基于浏览器技术的,是开放的体系,它所使用的js,html,css等编程技术都是以纯文本的形式加载的,所以第三方很容易便能拿到源代码并且进行篡改,这就造成了严重的安全隐患。
另外,它自带了chrome调试控制台,开发人员很容易在运行阶段,打开调试器,调试页面逻辑。如此一来,对于有些需要保密的业务就造成了很大的安全问题。Electron支持将所加载的所有前端资源文件(html,js,css,图片等)打包为asar文件。这样所有的程序资源都在一个文件中。asar文件其实一个是档案文档文件,类似于tar文件。它把所有的文件内容连接在一个文件中,不加密,不压缩,并在文件头部中使用json存储所有文件的路径,大小,偏移等信息。Asar文件虽然用户打不开了,但是内容其实都还是明文,是不安全的,容易遭到破解:例如,使用nodejs的asar工具,可以使用命令asar extract app.asar dest解压app.asar文件到dest目录。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的至少在于提供一种适用于electron的加密方法,它旨在解决现有技术中所存在的安全隐患。
为实现上述目的及其他相关目的,本发明的一个实施方式提供一种适用于electron的加密方法,包括步骤:
通过对asar文件加密,得到gsar文件;
以所述的gsar文件为依据,获取支持加载所述gsar文件的electron的源代码;
关闭调试工具并拒绝运行所述调试工具;
当所述electron启动后,在加载文件的过程中会进行初始化操作。
可选地,通过对asar文件加密,得到gsar文件的步骤包括:
通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件。
可选地,通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件的步骤包括:
随机生成一个固定长度的随机数字组成的数组A,用所述数组A作为密匙,使用AES算法加密asar文件,得到产物B;
通过openssl命令,生成公匙K,使用RSA算法和公匙K,将所述密匙A加密为A2;将A2和所述的产物B连接,得到gsar文件。
可选地,关闭调试工具包括步骤:
通过electron api关闭chromium调试工具。
可选地,拒绝运行所述调试工具包括步骤:
当发现程序运行带有命令行参数remote-debugging-port,remote-debugging-address则直接拒绝运行electron全部应用。
可选地,通过所述openssl命令,还生成私匙K,所述私匙K与所述公匙K为非对称加密的密钥对。
可选地,在加载文件的过程中会进行初始化操作的步骤包括:
判断所述加载文件的文件类型;
若所述加载文件为asar文件,则直接进行asar初始化。
可选地,若所述加载文件为gsar文件,则执行以下步骤:
读取gsar文件中首部的若干固定字节为密匙A2,剩余的尾部为B,使用所述私匙K解密A2,得到密匙A,通过密匙A和AES算法解密B部分内容获得文件asar文件内容;
得到asar文件内容后,将其进行加密处理后供于调用方,并进行asar初始化。
可选地,得到asar文件内容后,将其进行加密处理后供于调用方的步骤包括:
生成临时随机字典映射,并利用所述随机字典映射对所述asar文件内容进行转换生成字典文件,并写入临时文件;
同时,修改文件读取方法,对所述字典文件中的读取内容通过字典逆向转换后供给调用方。
可选地,所述的字典文件放在内存中,不在磁盘上。
本发明实施方式提供的上述技术方案,通过本方案的实施,黑客无法获取软件的源代码,这样避免了篡改软件的可能;同时也无法打开chromium调试工具,无法在运行期间调试并破解软件。实现了代码的加密,防止用户拿到源代码并实施篡改,并且防止用户自行打开调试工具,对软件实施破解。
附图说明
图1显示为本发明所述的一种适用于electron的加密方法流程示意图;
图2使用16进制查看工具,gsar文件的显示内容。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效。
如图1所示,一种适用于electron的加密方法,包括步骤:
通过对asar文件加密,得到gsar文件。
以所述的gsar文件为依据,获取支持加载所述gsar文件的electron的源代码:即修改electron的源代码,使其支持加载gsar文件。
关闭调试工具并拒绝运行所述调试工具;
当所述electron启动后,在加载asar文件的过程中会对asar文件进行初始化操作。
在某一实施方式中,通过对asar文件加密,得到gsar文件的步骤包括:
通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件。
在某一实施方式中,通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件的步骤包括:
随机生成一个固定长度的随机数字组成的数组A,用此数组A作为密匙,使用AES算法加密asar文件,得到产物B。然后通过非对称加密技术保护此随机密匙A。通过openssl命令,我们生成非对称加密的密匙对公匙K和私匙K。使用RSA算法和公匙K,可以把密匙A加密为A2。把A2文件和之前的AES产物B连接,写文件,即为gsar文件,所述gsar文件为加密过的asar文件。
在某一实施方式中,关闭调试工具包括步骤:
通过electron api关闭chromium调试工具。由于已经代码做了保护,用户无法查看或修改代码。因此,只需要在electron打开窗口的API中,提供初始化选项devTools:false,即可停止openDevToolsAPI打开chrome调试工具。
在某一实施方式中,拒绝运行所述调试工具包括步骤:
当发现程序运行带有命令行参数remote-debugging-port,remote-debugging-address则直接拒绝运行electron全部应用。
Electron支持使用chrome driver等调试工具远程连接并调试页面。需要在代码中屏蔽electron调试端口等命令行参数。如果发现程序运行带有命令行参数remote-debugging-port,remote-debugging-address则直接拒绝启动应用。
在某一实施方式中,通过所述openssl命令,还生成私匙K,所述私匙K与所述公匙K为非对称加密的密钥对。
在某一实施方式中,在加载文件的过程中会进行初始化操作的步骤包括:
判断所述加载文件的文件类型;
若所述加载文件为asar文件,则直接进行asar初始化。
在某一实施方式中,若所述加载文件为gsar文件,则执行以下步骤:
读取gsar文件首部若干固定字节(所述若干固定字节的字节数为字组A加密后的字节数)为RSA加密的AES密匙A2,剩余的尾部为加密文件内容B。使用客户端内嵌入的私匙K解密A2,得到AES密匙A。使用密匙A和AES算法解密B部分内容获得文件asar文件内容。
得到asar文件内容后,需要写入到临时目录供electron启动加载使用。为了防止此缓存文件内容泄露,需要生成临时随机字典映射,利用随机字典映射对文件内容进行转换后得到字典文件,所述字典文件是指对文件内容进行映射后的产物;写入临时文件;并修改文件读取方法,对字典文件中的文件读取内容通过字典逆向转换后给调用方。此字典文件放在内存中,不在磁盘上落地。之后,继续运行asar初始化方法。
使用了本方案的加密技术之后,打包的程序执行文件为加密gsar文件。使用16进制查看工具,显示gsar文件内容无法识别,如图2所示。
同时黑客无法通过命令行参数remote-debugging-port,remote-debugging-address打开chrome的远程调试接口。
总之,本技术方案有效的提高了electron的安全性,保护了基于electron技术的软件的版权,防止软件遭受黑客破解,篡改。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种适用于electron的加密方法,其特征在于,包括步骤:
通过对asar文件加密,得到gsar文件;
以所述的gsar文件为依据,获取支持加载所述gsar文件的electron的源代码;
关闭调试工具并拒绝运行所述调试工具;
当所述electron启动后,在加载文件的过程中会进行初始化操作。
2.根据权利要求1所述的一种适用于electron的加密方法,其特征在于,通过对asar文件加密,得到gsar文件的步骤包括:
通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件。
3.根据权利要求2所述的一种适用于electron的加密方法,其特征在于,通过openssl的非对称加密和对称加密技术对asar文件进行加密,得到gsar文件的步骤包括:
随机生成一个固定长度的随机数字组成的数组A,用所述数组A作为密匙,使用AES算法加密asar文件,得到产物B;
通过openssl命令,生成公匙K,使用RSA算法和公匙K,将所述密匙A加密为A2;将A2和所述的产物B连接,得到gsar文件。
4.根据权利要求1所述的一种适用于electron的加密方法,其特征在于,关闭调试工具包括步骤:
通过electron api关闭chromium调试工具。
5.根据权利要求1所述的一种适用于electron的加密方法,其特征在于,拒绝运行所述调试工具包括步骤:
当发现程序运行带有命令行参数remote-debugging-port,remote-debugging-address则直接拒绝运行electron全部应用。
6.根据权利要求3所述的一种适用于electron的加密方法,其特征在于,通过所述openssl命令,还生成私匙K,所述私匙K与所述公匙K为非对称加密的密钥对。
7.根据权利要求6所述的一种适用于electron的加密方法,其特征在于,在加载文件的过程中会进行初始化操作的步骤包括:
判断所述加载文件的文件类型;
若所述加载文件为asar文件,则直接进行asar初始化。
8.根据权利要求7所述的一种适用于electron的加密方法,其特征在于,
若所述加载文件为gsar文件,则执行以下步骤:
读取gsar文件中首部的若干固定字节为密匙A2,剩余的尾部为B,使用所述私匙K解密A2,得到密匙A,通过密匙A和AES算法解密B部分内容获得文件asar文件内容;
得到asar文件内容后,将其进行加密处理后供于调用方,并进行asar初始化。
9.根据权利要求8所述的一种适用于electron的加密方法,其特征在于,得到asar文件内容后,将其进行加密处理后供于调用方的步骤包括:
生成临时随机字典映射,并利用所述随机字典映射对所述asar文件内容进行转换生成字典文件,并写入临时文件;
同时,修改文件读取方法,对所述字典文件中的读取内容通过字典逆向转换后供给调用方。
10.根据权利要求9所述的一种适用于electron的加密方法,其特征在于,所述的字典文件放在内存中,不在磁盘上。
CN202010104846.5A 2020-02-20 2020-02-20 一种适用于electron的加密方法 Active CN111368265B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010104846.5A CN111368265B (zh) 2020-02-20 2020-02-20 一种适用于electron的加密方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010104846.5A CN111368265B (zh) 2020-02-20 2020-02-20 一种适用于electron的加密方法

Publications (2)

Publication Number Publication Date
CN111368265A true CN111368265A (zh) 2020-07-03
CN111368265B CN111368265B (zh) 2022-09-13

Family

ID=71208163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010104846.5A Active CN111368265B (zh) 2020-02-20 2020-02-20 一种适用于electron的加密方法

Country Status (1)

Country Link
CN (1) CN111368265B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090328003A1 (en) * 2003-02-11 2009-12-31 Pensak David A Systems And Methods For Regulating Execution Of Computer Software
CN107256161A (zh) * 2017-06-13 2017-10-17 广发证券股份有限公司 基于electron技术的客户端升级方法
CN107395620A (zh) * 2017-08-17 2017-11-24 无锡清华信息科学与技术国家实验室物联网技术中心 一种基于随机字节映射的网络传输加密解密方法
CN110147656A (zh) * 2019-05-10 2019-08-20 重庆迅燕科技有限公司 一种Node.js的代码加密及底层运行时解密办法
CN110190962A (zh) * 2019-04-12 2019-08-30 杭州电子科技大学 一种防泄露的文件安全共享方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090328003A1 (en) * 2003-02-11 2009-12-31 Pensak David A Systems And Methods For Regulating Execution Of Computer Software
CN107256161A (zh) * 2017-06-13 2017-10-17 广发证券股份有限公司 基于electron技术的客户端升级方法
CN107395620A (zh) * 2017-08-17 2017-11-24 无锡清华信息科学与技术国家实验室物联网技术中心 一种基于随机字节映射的网络传输加密解密方法
CN110190962A (zh) * 2019-04-12 2019-08-30 杭州电子科技大学 一种防泄露的文件安全共享方法
CN110147656A (zh) * 2019-05-10 2019-08-20 重庆迅燕科技有限公司 一种Node.js的代码加密及底层运行时解密办法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蛋片鸡: ""Electron把网页打包成桌面应用并进行源码加密"", 《HTTPS://WWW.CNBLOGS.COM/FHC1994/P/10055698.HTML》 *

Also Published As

Publication number Publication date
CN111368265B (zh) 2022-09-13

Similar Documents

Publication Publication Date Title
CN108595989B (zh) 一种iOS下移动APP安全防护系统及方法
CN109918917B (zh) 防止h5源码泄漏的方法、计算机设备和存储介质
KR20080005493A (ko) 소프트웨어 보호
EP3038004A1 (en) Method for providing security for common intermediate language-based program
CN108363911B (zh) 一种Python脚本混淆、水印的方法及装置
CN109871704B (zh) 基于Hook的安卓资源文件防护方法、设备和存储介质
WO2016078130A1 (zh) 一种防逆向apk文件的动态加载方法
TW201445355A (zh) 資料保護的方法和裝置
CN112469036B (zh) 一种消息加解密方法、装置、移动终端和存储介质
JP2013507671A (ja) シェル・コードに埋め込まれたソフトウェア・ライセンス
CN107609394A (zh) Android安装包的防篡改方法、存储设备及装置
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN106203141A (zh) 一种应用的数据处理方法和装置
Müller et al. Practical decryption exfiltration: Breaking pdf encryption
CN114547558A (zh) 授权方法、授权控制方法及装置、设备和介质
US9268713B2 (en) Methods, systems and apparatus for managing data entries on a database
CN111368265B (zh) 一种适用于electron的加密方法
US6675297B1 (en) Method and apparatus for generating and using a tamper-resistant encryption key
CN108076050B (zh) 一种密文封箱式保护JavaScript源码的方法及系统
CN114547653B (zh) 开发环境的加密方法、解密方法及装置、设备和介质
JP2001356952A (ja) データ暗号化方法及びシステム
US11138319B2 (en) Light-weight context tracking and repair for preventing integrity and confidentiality violations
KR20160137222A (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
TW202133050A (zh) 用於將可執行代碼編碼在條碼中的系統和方法
CN114637985A (zh) 一种基于多环境参数的Android应用登录伪造识别方法

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