CN113761486B - 一种基于语法糖解析的一键式代码混淆方法 - Google Patents
一种基于语法糖解析的一键式代码混淆方法 Download PDFInfo
- Publication number
- CN113761486B CN113761486B CN202111060744.9A CN202111060744A CN113761486B CN 113761486 B CN113761486 B CN 113761486B CN 202111060744 A CN202111060744 A CN 202111060744A CN 113761486 B CN113761486 B CN 113761486B
- Authority
- CN
- China
- Prior art keywords
- code
- confusion
- grammar
- list
- sugar
- 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 12
- 238000004458 analytical method Methods 0.000 title claims abstract description 8
- 238000012360 testing method Methods 0.000 claims abstract description 20
- 238000000605 extraction Methods 0.000 claims abstract description 4
- 238000001914 filtration Methods 0.000 claims abstract description 4
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 5
- 238000012916 structural analysis Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于语法糖解析的一键式代码混淆方法,涉及软件开发技术领域,包括以下步骤:(1)初始化;(2)代码提取;(3)语法糖过滤;(4)混淆配置生成;(5)代码混淆;(6)运行测试。本发明使其自动适配现有混淆工具的语法兼容问题,从而以较低成本实现关键代码的有效保护。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种基于语法糖解析的一键式代码混淆方法。
背景技术
代码混淆(Obfuscation)是将计算机程序的代码,转换成功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。目前已经存在许多种功能各异的代码混淆器。
其主要工作有:
1、将代码中的各种元素,如变量、函数、类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。
2、重写代码中的部分逻辑,将其变成功能上等价、但是更难理解的形式。比如将for循环改写成while循环、将循环改写成递归、精简中间变量,等等。
3、打乱代码的格式。比如删除空格、将多行代码挤到一行中、或者将一行代码断成多行等等。
4、添加花指令,通过特殊构造的指令来使得反汇编器出错,进而干扰反编译工作的进行。
代码混淆器也会带来一些问题。主要的问题包括:
1、被混淆的代码难于理解,因此调试也变得困难起来。开发人员通常需要保留原始的未混淆的代码用于调试。
2、对于支持反射的语言,代码混淆有可能与反射发生冲突。
3、代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。
实际应用中,问题2会导致混淆后的程序对语法糖支持不完整,影响正常运行,目前也有一些解决方案:
1:针对不同系统的代码,用到的相关语法糖各有区别,可针对不同系统或模块,分别设置混淆参数,忽略无法兼容的语法。
2:基于开源方案扩展,主动适配用到的语法糖,实现起来难度较高,且需要随语法更新及时更新混淆工具。
由于上述方案2实现难度大,成本不可控,目前采用较多的是方案1,其特点在于:
1、可解决混淆后程序无法正常运行的问题,但会增加代码工程的复杂度。
2、编译期配置调整工作量较多,因为不同代码模块存在的混淆兼容性问题各有不同。
3、运行期验证工作较多,很多兼容性问题要在运行期测试才能发现。
综上,代码混淆工作存在编译期调整和运行期验证两部分可控性较差的投入。
针对以上缺点,本发明希望通过知识复用和调整测试过程工具化的方法提升代码混淆工作量的可控程度和混淆输出物的可靠性。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何提升代码混淆工作量的可控程度和混淆输出物的可靠性。
为实现上述目的,本发明提供了一种基于语法糖解析的一键式代码混淆方法,其特征在于,包括以下步骤:
步骤1、初始化;
步骤2、代码提取;
步骤3、语法糖过滤;
步骤4、混淆配置生成;
步骤5、代码混淆;
步骤6、运行测试。
进一步地,所述步骤1是指分析使用的代码混淆工具,得出非兼容语法清单,记录到配置文件。
进一步地,所述配置文件若初始为空,可在后续环节逐步填充该文件。
进一步地,所述步骤2是指从源码文件读取源码内容,并进行结构化解析,获取代码清单。
进一步地,所述步骤3是指遍历所述代码清单,逐个比对所述非兼容语法清单中是否包含当前代码单元,如果包含,保留当前代码单元并传递到步骤4,否则丢弃。
进一步地,所述步骤4是指遍历步骤3过滤后的所述代码清单,对其中每一项进行忽略配置,最终生成混淆配置参数集合。
进一步地,所述步骤5按照步骤4生成的所述混淆配置参数集合,执行代码混淆,生成程序包。
进一步地,所述步骤6测试混淆后的所述程序包,得出测试结果,如有异常,排查原因,如无异常,测试通过,所述程序包可用。
进一步地,所述测试结果如发现新的非兼容语法,存入所述非兼容语法清单。
进一步地,所述代码单元包括类、代码文件和函数。
本发明可有效改进现有代码混淆工具的兼容性和混淆后程序运行的稳定性。由于采用了自动化的语法糖解析和非兼容语法库积累,本发明具有较高的易用性,可实现一键式代码混淆。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本发明的一个较佳实施例的一种基于语法糖解析的一键式代码混淆方法的数据流图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在附图中,结构相同的部件以相同数字标号表示,各处结构或功能相似的组件以相似数字标号表示。附图所示的每一组件的尺寸和厚度是任意示出的,本发明并没有限定每个组件的尺寸和厚度。为了使图示更清晰,附图中有些地方适当夸大了部件的厚度。
如图1所示,初始化:分析使用的代码混淆工具,得出非兼容语法清单,记录到配置文件。以JAVA语言为例,比如SpringBootApplication等注解在某些混淆工具中不能被兼容,可以直接记录到配置文件。
代码提取:从源码文件读取源码内容,并进行结构化解析,获取代码清单。
参考伪代码如下:
语法糖过滤:遍历上一步得到的代码清单,逐个比对非兼容语法清单中是否包含当前代码单元(类、代码文件、函数等),如果包含,保留当前代码单元并传递到下一步,否则丢弃。
参考伪代码如下:
混淆配置生成:遍历上一步过滤后的代码清单,对其中每一项进行忽略配置,最终生成混淆配置参数集合。
参考伪代码如下:
代码混淆:按照上一步生成的混淆配置,执行代码混淆,生成程序包。
参考伪代码如下:
sh build.sh input/xxx.jar
运行测试:测试混淆后的程序包,如有异常,排查原因,如发现新的非兼容语法,存入非兼容语法清单。如无异常,测试通过,混淆程序包可用。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (4)
1.一种基于语法糖解析的一键式代码混淆方法,其特征在于,包括以下步骤:
步骤1、初始化,分析使用的代码混淆工具,得出非兼容语法清单,记录到配置文件;
步骤2、代码提取,从源码文件读取源码内容,并进行结构化解析,获取代码清单;
步骤3、语法糖过滤,遍历所述代码清单,逐个比对所述非兼容语法清单中是否包含当前代码单元,如果包含,保留当前代码单元并传递到步骤4,否则丢弃;
步骤4、混淆配置生成,遍历步骤3过滤后的所述代码清单,对其中每一项进行忽略配置,最终生成混淆配置参数集合;
步骤5、代码混淆,按照步骤4生成的所述混淆配置参数集合,执行代码混淆,生成程序包;
步骤6、运行测试,测试混淆后的所述程序包,得出测试结果,如有异常,排查原因,如无异常,测试通过,所述程序包可用。
2.如权利要求1所述的一种基于语法糖解析的一键式代码混淆方法,其特征在于,所述配置文件若初始为空,可在后续环节逐步填充该文件。
3.如权利要求2所述的一种基于语法糖解析的一键式代码混淆方法,其特征在于,所述测试结果如发现新的非兼容语法,存入所述非兼容语法清单。
4.如权利要求3所述的一种基于语法糖解析的一键式代码混淆方法,其特征在于,所述代码单元包括类、代码文件和函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111060744.9A CN113761486B (zh) | 2021-09-10 | 2021-09-10 | 一种基于语法糖解析的一键式代码混淆方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111060744.9A CN113761486B (zh) | 2021-09-10 | 2021-09-10 | 一种基于语法糖解析的一键式代码混淆方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113761486A CN113761486A (zh) | 2021-12-07 |
CN113761486B true CN113761486B (zh) | 2023-09-05 |
Family
ID=78794689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111060744.9A Active CN113761486B (zh) | 2021-09-10 | 2021-09-10 | 一种基于语法糖解析的一键式代码混淆方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113761486B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354449A (zh) * | 2015-11-04 | 2016-02-24 | 北京鼎源科技有限公司 | 一种面向Lua语言的加扰混淆方法和解密方法 |
CN105871811A (zh) * | 2015-02-09 | 2016-08-17 | 华为技术有限公司 | 控制应用程序权限的方法及控制器 |
CN106228040A (zh) * | 2016-07-13 | 2016-12-14 | 成都知道创宇信息技术有限公司 | 一种网页源码三层加密方法 |
CN109784009A (zh) * | 2018-12-15 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 代码混淆方法、系统、计算机装置及计算机可读存储介质 |
CN110765425A (zh) * | 2019-10-25 | 2020-02-07 | 杭州涂鸦信息技术有限公司 | 一种对ios应用程序源代码进行混淆保护的方法及系统 |
CN111209741A (zh) * | 2020-01-16 | 2020-05-29 | 网易(杭州)网络有限公司 | 表格数据字典的处理方法及装置 |
CN115809442A (zh) * | 2022-11-22 | 2023-03-17 | 广州趣丸网络科技有限公司 | 一种反逆向代码混淆方法、装置、设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5133973B2 (ja) * | 2007-01-18 | 2013-01-30 | パナソニック株式会社 | 難読化支援装置、難読化支援方法、プログラムおよび集積回路 |
JP6641857B2 (ja) * | 2015-10-05 | 2020-02-05 | 富士通株式会社 | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 |
US20170214701A1 (en) * | 2016-01-24 | 2017-07-27 | Syed Kamran Hasan | Computer security based on artificial intelligence |
-
2021
- 2021-09-10 CN CN202111060744.9A patent/CN113761486B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105871811A (zh) * | 2015-02-09 | 2016-08-17 | 华为技术有限公司 | 控制应用程序权限的方法及控制器 |
CN105354449A (zh) * | 2015-11-04 | 2016-02-24 | 北京鼎源科技有限公司 | 一种面向Lua语言的加扰混淆方法和解密方法 |
CN106228040A (zh) * | 2016-07-13 | 2016-12-14 | 成都知道创宇信息技术有限公司 | 一种网页源码三层加密方法 |
CN109784009A (zh) * | 2018-12-15 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 代码混淆方法、系统、计算机装置及计算机可读存储介质 |
CN110765425A (zh) * | 2019-10-25 | 2020-02-07 | 杭州涂鸦信息技术有限公司 | 一种对ios应用程序源代码进行混淆保护的方法及系统 |
CN111209741A (zh) * | 2020-01-16 | 2020-05-29 | 网易(杭州)网络有限公司 | 表格数据字典的处理方法及装置 |
CN115809442A (zh) * | 2022-11-22 | 2023-03-17 | 广州趣丸网络科技有限公司 | 一种反逆向代码混淆方法、装置、设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Android平台智能手机在线升级技术的改进与实现;张宇杰;《电子质量》(第第1期期);第55-58页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113761486A (zh) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Rosenblum | A practical approach to programming with assertions | |
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
Voelter et al. | Lessons learned from developing mbeddr: a case study in language engineering with MPS | |
US12111924B2 (en) | System for detecting malicious programmable logic controller code | |
US7519956B2 (en) | Method for generating document components and managing same | |
CN111222141B (zh) | 一种汽车电控单元代码漏洞分析方法和系统 | |
CN112835323B (zh) | 可编程逻辑控制语言编译方法及装置 | |
Régis-Gianas et al. | Morbig: A static parser for POSIX shell | |
Blanchard et al. | Logic against ghosts: comparison of two proof approaches for a list module | |
Tuong et al. | Deeply integrating C11 code support into Isabelle/PIDE | |
CN113761486B (zh) | 一种基于语法糖解析的一键式代码混淆方法 | |
CN109271237B (zh) | 仿真控制方法和装置 | |
Schulz-Rosengarten et al. | Toward object-oriented modeling in SCCharts | |
US6611924B1 (en) | Reducing code size of debug output statements | |
Nogin et al. | Sequent schema for derived rules | |
Ariola et al. | A proof-theoretic foundation of abortive continuations | |
Kienle et al. | System-specific static code analyses: a case study in the complex embedded systems domain | |
EP2535813A1 (en) | Method and device for generating an alert during an analysis of performance of a computer application | |
Ousterhout | Tcl/Tk Engineering Manual | |
Ward et al. | The formal semantics of program slicing for nonterminating computations | |
Zhao et al. | Development of global specification for dynamically adaptive software | |
Truong et al. | Checking interface interaction protocols using aspect-oriented programming | |
Li et al. | Factorization of behavioral integrity | |
JPH1031584A (ja) | ソフトウエアの検証自動化装置 | |
JP2000242485A (ja) | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 |
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 |