CN107016265A - 一种基于加密与控制流混淆的代码安全防护能力测评方法 - Google Patents
一种基于加密与控制流混淆的代码安全防护能力测评方法 Download PDFInfo
- Publication number
- CN107016265A CN107016265A CN201710237306.2A CN201710237306A CN107016265A CN 107016265 A CN107016265 A CN 107016265A CN 201710237306 A CN201710237306 A CN 201710237306A CN 107016265 A CN107016265 A CN 107016265A
- Authority
- CN
- China
- Prior art keywords
- code
- apk
- controlling stream
- dasho
- encryption
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000001681 protective effect Effects 0.000 title claims abstract description 15
- 238000012360 testing method Methods 0.000 claims abstract description 11
- 230000000694 effects Effects 0.000 claims description 12
- 235000013399 edible fruits Nutrition 0.000 claims description 3
- 238000011156 evaluation Methods 0.000 claims description 3
- 230000004888 barrier function Effects 0.000 abstract 1
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于加密与控制流混淆的代码安全防护能力测评方法:为了防止攻击者通过反编译直接获取程序中字符串常量内容,对字符串常量进行了加密;同时增加攻击者阅读代码的难度,采用代码混淆工具在不改变代码原有功能情况下,做到了打乱程序中原有的控制流,极大地增加了攻击者阅读代码的难度。按照本发明公开的测评方法可以开展基于加密与控制流混淆的代码安全防护能力测评分析,有效地评估经过代码混淆软件混淆后的代码安全防护性能。
Description
技术领域
本发明涉及移动App安全防护性能测评领域,特别是涉及一种基于加密与控制流混淆的代码安全防护能力测评方法。
背景技术
标识符重命名混淆功能,不仅实现了对方法和变量的重命名,还支持用户自己设置重命名字母表、新名字的最小长度,以及自定义选择需要进行重命名工作的类或方法。
字符串加密功能实现对字符串常量内容的加密工作,使得攻击者不能直接获得字符串常量内容。DashO还支持用户设置字符串的加密等级、自定义每个类和方法是否需要进行字符串加密工作,还支持用户使用定制的加密算法。
在控制流混淆方面,相较于传统的只是插入错误的多余基本块的方法,DashO提供了更进一步的控制流混淆,即在增加基本块的基础上,摧毁代码的架构,重新构建代码。最终的代码和源代码功能相同,但是在表示上与源代码完全不同。同样,用户可以自定义类和方法是否需要进行控制流混淆工作。
DashO作为一款Java混淆器,可以对Java代码可以进行压缩、优化、混淆的工作。其中混淆功能包括标识符重命名、字符串加密和控制流混淆。
发明内容
为了解决上述存在的问题,本发明提供一种基于加密与控制流混淆的代码安全防护能力测评方法,为了防范恶意主机对合法移动App进行逆向分析和恶意篡改,采用基于Java的混淆器DashO,可以对Java代码可以进行压缩、优化、混淆的工作。从而达到混淆功能包括标识符重命名、字符串加密和控制流混淆的目的,为达此目的,本发明提供一种基于加密与控制流混淆的代码安全防护能力测评方法,具体测评方法,:
基于DashO代码混淆工具对移动App源代码实施混淆,定义源代码文件为DashO.apk,经过混淆后的测试文件为DashO1.apk、DashO2.apk、DashO3.apk,按照如下步骤进行:
1)DashO在应用于Android混淆时,支持Ant、Gradle和图形界面直接对Apk文件操作三种方式,使用图形界面可以发现有诸多操作选项,几个主要类别包括输出、切入口、移除、混淆、优化、输出和结果,我们主要研究其中的输入、混淆、输出和结果,并根据需要选择不同的选项获得不同的结果;
2)勾选标识符重命名功能,利用DashO实现对标识符进行重命名,获得混淆后代码DashO1.apk;
3)勾选字符串加密功能,利用DashO实现对字符串进行加密,获得混淆后代码DashO2.apk;
4)勾选隐藏调用功能,利用DashO实现控制流混淆功能,获得混淆后代码DashO3.apk;
5)根据步骤2)-4)代码混淆执行输出文件,利用反编译软件对混淆后代码开展防护效果评测工作。
作为本发明进一步改进,DashO1.apk具备标识符重命名,DashO2.apk具备字符串加密,DashO2.apk具备控制流混淆,本发明常用具备标识符重命名DashO1.apk、具备字符串加密DashO2.apk、具备控制流混淆DashO3.apk作为混淆后的测试文件。
本发明公开了一种基于加密与控制流混淆的代码安全防护能力测评方法,采用基于Java的混淆器DashO,可以对Java代码可以进行压缩、优化、混淆的工作。从而达到混淆功能包括标识符重命名、字符串加密和控制流混淆的目的,其有益效果如下:
1)本发明方法可以针对利用DashO代码混淆软件对移动App实现代码混淆,使用图形界面可以发现有诸多操作选项,并根据需要选择不同的选项获得不同的结果;
2)本发明方法可以采用反编译软件检验混淆结果,对混淆代码实施全面评估。
附图说明
图1是Dasho混淆前后标识符效果对比图;
图2是Dasho混淆后标识符效果图;
图3是 Dasho混淆后字符串加密效果图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述:
本发明提供一种基于加密与控制流混淆的代码安全防护能力测评方法,为了防范恶意主机对合法移动App进行逆向分析和恶意篡改,采用基于Java的混淆器DashO,可以对Java代码可以进行压缩、优化、混淆的工作。从而达到混淆功能包括标识符重命名、字符串加密和控制流混淆的目的。
作为本发明一种具体实施例,本发明提供一种基于加密与控制流混淆的代码安全防护能力测评方法,基于DashO代码混淆工具对移动App源代码实施混淆,以源代码文件DashO.apk以及经过混淆后的测试文件DashO1.apk(具备标识符重命名)、DashO2.apk(具备字符串加密)、DashO3.apk(具备控制流混淆)为例,具体实施步骤如下:
1)DashO在应用于Android混淆时,支持Ant、Gradle和图形界面直接对Apk文件操作三种方式。使用图形界面可以发现有诸多操作选项,几个主要类别包括输出、切入口、移除、混淆、优化、输出和结果,我们主要研究其中的输入、混淆、输出和结果,并根据需要选择不同的选项获得不同的结果;
2)勾选标识符重命名功能,利用DashO实现对标识符进行重命名,获得混淆后代码DashO1.apk;
3)勾选字符串加密功能,利用DashO实现对字符串进行加密,获得混淆后代码DashO2.apk;
4)勾选隐藏调用功能,利用DashO实现控制流混淆功能,获得混淆后代码DashO3.apk;
5)根据步骤2)-4)代码混淆执行输出文件,利用反编译软件对混淆后代码开展防护效果评测工作。
附图附表说明如下:
图1、图2、图3和表1是本发明公开的一种基于加密与控制流混淆的代码安全防护能力测评方法的实验结果。
图1是Dasho混淆前后标识符效果对比图。使用JD-GUI分别对DashO.apk和DashO1.apk文件进行反编译,观察混淆前后项目中Person类代码,混淆前后项目中标识符名字。观察图1,可以观察到除却Activity以外的类(测试时重命名功能设置了Activity除外)均被重命名,而且类中的方法和变量也均被重命名。可以证明DashO对类名、方法名以及变量名均进行了重命名工作,有效地实现了标识符重命名功能。
图2是Dasho混淆后标识符效果图。由图2可以得到DashO的标识符重命名采用了Hash改名和过度重载。类、方法和变量均被用大量无意义不相关的名字进行重命名,这是Hash改名,增加了攻击者的阅读难度;在两个不同的类eval_e和eval_j中有名同为eval_g的两个变量以及同为同为eval_q的两个变量,可见DashO会在不同的类中重复使用相同无意义的名字来进行重命名工作,这属于过度重载,进一步增加了攻击者对程序的理解难度。
由图3可知,到混淆后程序String类型变量address、age和name变量的内容均被加密,无法直接获得常量内容,但sex变量没有被加密,可以直接获取内容。可以看出DashO采用加密算法很好地对程序中字符串常量内容进行加密,加密效果很显著,然而仍存在缺漏,少数常量没有被加密。
表1为Person类中各方法控制流参数变化表。使用IDA pro对DashO.apk和DashO1.apk进行反汇编工作,获取其中部分方法的控制流图,以Person类中getMessage方法、SelectSort方法和MainActivity类中onClick方法为例,统计各个方法控制流图中边数目、节点数目和控制流循环复杂度,如表1所示。尽管控制流复杂度没有变化,但每个方法控制流图中的边数目和节点数目都有所变化,相比较于经过ProGuard混淆前后控制流指标没有任何变化效果已经很显著。
本发明附图附表说明:
图1、图2、图3和表1是本发明公开的一种基于加密与控制流混淆的代码安全防护能力测评方法的实验结果。
图1是Dasho混淆前后标识符效果对比图。使用JD-GUI分别对DashO.apk和DashO1.apk文件进行反编译,观察混淆前后项目中Person类代码,混淆前后项目中标识符名字。观察图1,可以观察到除却Activity以外的类(测试时重命名功能设置了Activity除外)均被重命名,而且类中的方法和变量也均被重命名。可以证明DashO对类名、方法名以及变量名均进行了重命名工作,有效地实现了标识符重命名功能。
图2是Dasho混淆后标识符效果图。由图2可以得到DashO的标识符重命名采用了Hash改名和过度重载。类、方法和变量均被用大量无意义不相关的名字进行重命名,这是Hash改名,增加了攻击者的阅读难度;在两个不同的类eval_e和eval_j中有名同为eval_g的两个变量以及同为同为eval_q的两个变量,可见DashO会在不同的类中重复使用相同无意义的名字来进行重命名工作,这属于过度重载,进一步增加了攻击者对程序的理解难度。
由图3可知,到混淆后程序String类型变量address、age和name变量的内容均被加密,无法直接获得常量内容,但sex变量没有被加密,可以直接获取内容。可以看出DashO采用加密算法很好地对程序中字符串常量内容进行加密,加密效果很显著,然而仍存在缺漏,少数常量没有被加密。
方法 | 边数目(混淆前/混淆后) | 节点数目(混淆前/混淆后) | 控制流复杂度(混淆前/混淆后) | 变化(混淆后比较于混淆后) |
getMessage | 9/10 | 7/8 | 4/4 | 不变 |
SelectSort | 18/20 | 14/16 | 6/6 | 不变 |
onClick | 10/ | 8/8 | 10/10 | 不变 |
表1为Person类中各方法控制流参数变化表。使用IDA pro对DashO.apk和DashO1.apk进行反汇编工作,获取其中部分方法的控制流图,以Person类中getMessage方法、SelectSort方法和MainActivity类中onClick方法为例,统计各个方法控制流图中边数目、节点数目和控制流循环复杂度,如表1所示。尽管控制流复杂度没有变化,但每个方法控制流图中的边数目和节点数目都有所变化,相比较于经过ProGuard混淆前后控制流指标没有任何变化效果已经很显著。
以上所述,仅是本发明的较佳实施例而已,并非是对本发明作任何其他形式的限制,而依据本发明的技术实质所作的任何修改或等同变化,仍属于本发明所要求保护的范围。
Claims (4)
1.一种基于加密与控制流混淆的代码安全防护能力测评方法,具体测评方法:
基于DashO代码混淆工具对移动App源代码实施混淆,定义源代码文件为DashO.apk,经过混淆后的测试文件为DashO1.apk、DashO2.apk、DashO3.apk,按照如下步骤进行:
1)DashO在应用于Android混淆时,支持Ant、Gradle和图形界面直接对Apk文件操作三种方式,使用图形界面可以发现有诸多操作选项,几个主要类别包括输出、切入口、移除、混淆、优化、输出和结果,我们主要研究其中的输入、混淆、输出和结果,并根据需要选择不同的选项获得不同的结果;
2)勾选标识符重命名功能,利用DashO实现对标识符进行重命名,获得混淆后代码DashO1.apk;
3)勾选字符串加密功能,利用DashO实现对字符串进行加密,获得混淆后代码DashO2.apk;
4)勾选隐藏调用功能,利用DashO实现控制流混淆功能,获得混淆后代码DashO3.apk;
5)根据步骤2)-4)代码混淆执行输出文件,利用反编译软件对混淆后代码开展防护效果评测工作。
2.根据权利要求1所述的 一种基于加密与控制流混淆的代码安全防护能力测评方法,其特征在于:DashO1.apk具备标识符重命名。
3.根据权利要求1所述的 一种基于加密与控制流混淆的代码安全防护能力测评方法,其特征在于:DashO2.apk具备字符串加密。
4.根据权利要求1所述的 一种基于加密与控制流混淆的代码安全防护能力测评方法,其特征在于:DashO2.apk具备控制流混淆。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710237306.2A CN107016265A (zh) | 2017-04-12 | 2017-04-12 | 一种基于加密与控制流混淆的代码安全防护能力测评方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710237306.2A CN107016265A (zh) | 2017-04-12 | 2017-04-12 | 一种基于加密与控制流混淆的代码安全防护能力测评方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107016265A true CN107016265A (zh) | 2017-08-04 |
Family
ID=59446068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710237306.2A Pending CN107016265A (zh) | 2017-04-12 | 2017-04-12 | 一种基于加密与控制流混淆的代码安全防护能力测评方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107016265A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107748838A (zh) * | 2017-10-13 | 2018-03-02 | 东软集团股份有限公司 | 安装包生成的方法、装置和存储介质以及电子设备 |
CN108074062A (zh) * | 2017-08-08 | 2018-05-25 | 迅鳐成都科技有限公司 | 一种基于区块链的钢铁行业电商平台安全支撑方法 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN112347430A (zh) * | 2020-10-28 | 2021-02-09 | 山东开创云计算有限公司 | Ios应用加固保护系统 |
CN112804184A (zh) * | 2019-11-13 | 2021-05-14 | 阿里巴巴集团控股有限公司 | 数据混淆方法、装置及设备 |
CN113094664A (zh) * | 2021-04-09 | 2021-07-09 | 每日互动股份有限公司 | 一种防止安卓应用程序被反编译的系统 |
CN113094665A (zh) * | 2021-04-09 | 2021-07-09 | 每日互动股份有限公司 | 一种防止java程序被反编译的系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295263A (zh) * | 2015-05-22 | 2017-01-04 | 中兴通讯股份有限公司 | 一种实现应用加固的方法及装置 |
-
2017
- 2017-04-12 CN CN201710237306.2A patent/CN107016265A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295263A (zh) * | 2015-05-22 | 2017-01-04 | 中兴通讯股份有限公司 | 一种实现应用加固的方法及装置 |
Non-Patent Citations (3)
Title |
---|
EVGET•软件发布: "DashO Pro", 《EVGET•软件发布HTTP://RELEASE.EVGET.COM/?P=161》 * |
EVGET慧都: "DashO Pro更新至v7.11,DashO Gradle插件升级", 《EVGET慧都HTTPS://WWW.EVGET.COM/ARTICLE/2016/10/19/25072.HTML》 * |
田振洲 等: "软件抄袭检测研究综述", 《信息安全学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108074062A (zh) * | 2017-08-08 | 2018-05-25 | 迅鳐成都科技有限公司 | 一种基于区块链的钢铁行业电商平台安全支撑方法 |
CN107748838A (zh) * | 2017-10-13 | 2018-03-02 | 东软集团股份有限公司 | 安装包生成的方法、装置和存储介质以及电子设备 |
CN112804184A (zh) * | 2019-11-13 | 2021-05-14 | 阿里巴巴集团控股有限公司 | 数据混淆方法、装置及设备 |
CN112804184B (zh) * | 2019-11-13 | 2023-10-10 | 阿里巴巴集团控股有限公司 | 数据混淆方法、装置及设备 |
CN111159662A (zh) * | 2019-12-25 | 2020-05-15 | 郑州阿帕斯数云信息科技有限公司 | 一种数据的处理方法和装置 |
CN112347430A (zh) * | 2020-10-28 | 2021-02-09 | 山东开创云计算有限公司 | Ios应用加固保护系统 |
CN113094664A (zh) * | 2021-04-09 | 2021-07-09 | 每日互动股份有限公司 | 一种防止安卓应用程序被反编译的系统 |
CN113094665A (zh) * | 2021-04-09 | 2021-07-09 | 每日互动股份有限公司 | 一种防止java程序被反编译的系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107016265A (zh) | 一种基于加密与控制流混淆的代码安全防护能力测评方法 | |
TWI750223B (zh) | 區塊鏈加密射頻晶片存儲設計方法 | |
CN112002210B (zh) | 用于测试并且加固软件应用的方法 | |
CN110704854B (zh) | 针对文本数据保留格式的流式加密方法 | |
CN105453481B (zh) | 包括表网络的计算设备 | |
CN104951674B (zh) | 用于应用程序的信息隐藏方法 | |
US20070086586A1 (en) | Semi-public white-box cipher | |
CN105468990A (zh) | 一种敏感信息的管理控制方法和装置 | |
CN107038383A (zh) | 一种数据处理的方法和设备 | |
US20170230175A1 (en) | Method and apparatus for encrypting and decrypting data | |
CN106778100B (zh) | 基于安卓平台和ios平台的混淆编译方法及混淆编译器 | |
CN103902858A (zh) | 一种apk应用加固的方法及系统 | |
CN108830096B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN102890758A (zh) | 一种保护可执行文件的方法及系统 | |
CN105338035B (zh) | 基于rs纠删码的安全存储方法和装置 | |
CN105099666A (zh) | 混淆轮边界的白盒密码系统和方法 | |
Ertaul et al. | Novel obfuscation algorithms for software security | |
CN107710671A (zh) | 终端装置及计算机程序 | |
JP6698774B2 (ja) | 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法 | |
CN104052595A (zh) | 密码算法定制方法 | |
CN108133147A (zh) | 可执行代码的保护方法、设备及可读存储介质 | |
JP6919973B2 (ja) | プログラムコードのコンピュータ支援難読化方法 | |
US10469245B2 (en) | Cryptographic system and method | |
CN107122662A (zh) | 一种基于Proguard软件的移动互联网App代码混淆测评方法 | |
KR101049072B1 (ko) | 식별 데이터를 이용하여 맵핑하는 방법 |
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: 20170804 |