CN107016265A - 一种基于加密与控制流混淆的代码安全防护能力测评方法 - Google Patents

一种基于加密与控制流混淆的代码安全防护能力测评方法 Download PDF

Info

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
Application number
CN201710237306.2A
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.)
Jinling Institute of Technology
Original Assignee
Jinling Institute of Technology
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 Jinling Institute of Technology filed Critical Jinling Institute of Technology
Priority to CN201710237306.2A priority Critical patent/CN107016265A/zh
Publication of CN107016265A publication Critical patent/CN107016265A/zh
Pending legal-status Critical Current

Links

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
    • G06F21/14Protecting 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具备控制流混淆。
CN201710237306.2A 2017-04-12 2017-04-12 一种基于加密与控制流混淆的代码安全防护能力测评方法 Pending CN107016265A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295263A (zh) * 2015-05-22 2017-01-04 中兴通讯股份有限公司 一种实现应用加固的方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106295263A (zh) * 2015-05-22 2017-01-04 中兴通讯股份有限公司 一种实现应用加固的方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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