CN109543369A - 一种dex的保护方法 - Google Patents

一种dex的保护方法 Download PDF

Info

Publication number
CN109543369A
CN109543369A CN201811410423.5A CN201811410423A CN109543369A CN 109543369 A CN109543369 A CN 109543369A CN 201811410423 A CN201811410423 A CN 201811410423A CN 109543369 A CN109543369 A CN 109543369A
Authority
CN
China
Prior art keywords
source code
smali
dex
language
dex file
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
CN201811410423.5A
Other languages
English (en)
Other versions
CN109543369B (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.)
Hangzhou Zhexin Information Technology Co Ltd
Original Assignee
Hangzhou Zhexin Information 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 Hangzhou Zhexin Information Technology Co Ltd filed Critical Hangzhou Zhexin Information Technology Co Ltd
Priority to CN201811410423.5A priority Critical patent/CN109543369B/zh
Publication of CN109543369A publication Critical patent/CN109543369A/zh
Application granted granted Critical
Publication of CN109543369B publication Critical patent/CN109543369B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种DEX的保护方法,该方法包括:将待保护的DEX文件反编译为smali源码;然后将所述smali源码中需要保护的源码转换为C语言源码;再然后将转换的C语言源码修改为调用C语言函数;并将转换为的C语言源码混淆编译并生成so文件;最后将修改后的smali源码生成为保护后的DEX文件;所述so文件和所述保护后的DEX文件共同实现保护前的DEX文件的功能。本发明的有益效果为:通过使用源码转换技术将DEX文件中的代码转成另一种语言的源码来进行DEX文件隐藏,从而实现DEX文件保护。

Description

一种DEX的保护方法
技术领域
本发明涉及信息安全技术领域,具体而言,涉及一种DEX的保护方法。
背景技术
DEX保护是通过技术手段将DEX保护起来以期达到能最大限度防止其中的代码被窃取、修改和反编译。由于安卓的开源特性,DEX的反编译是无法阻止的,DEX被反编译后将输出smali语言的源码,所以DEX保护主要目的是防止代码被窃取和修改。目前现在的DEX保护技术主要有以下几种:
1、代码混淆:利用混淆工具将代码的类名、变量名混淆为自己定义的格式,增加了DEX被反编译后的源码的阅读难度,该方法使用ProGuard即可轻松实现;
2、DEX自校验:在DEX的代码中增加了对自身的完整性校验,以达到防止修改的目的;
3、隐藏DEX:将DEX代码隐藏起来,以达到防止代码被窃取和修改的目的,该方法需要预留一个代理在APK中,该代理在运行时将隐藏的DEX代码释放出来并加载运行;
4、DEX结构变形:利用DEX的文件结构,将其中的指令抽取出来用nop指令代替,在运行时,执行代码前将抽取掉的取令填充回去,以达到防止代码被窃取和修改的目的。
目前现有的DEX保护技术,其中代码混淆和自校验技术由于将DEX文件完全暴露,导致其很容易被突破,在目前的技术环境下,基本起不到保护作用;而隐藏DEX和结构变形技术,它们的核心理念是隐藏,但是隐藏并不意味着消失,所以它们的技术只是提高了破解的难度而已,一理破解者找到隐藏地点,那么代码也就完全暴露了。
发明内容
为解决上述问题,本发明的目的在于提供一种DEX的保护方法,主要解决DEX隐藏的问题,真正地做到让原有的DEX代码完全消失,以达到防止代码被窃取和修改的目的。
本发明提供了一种DEX的保护方法,该方法包括以下步骤:
步骤101:将待保护的DEX文件反编译为smali源码;
步骤102:将所述smali源码中需要保护的源码转换为C语言源码;
步骤103:将步骤102中转换的C语言源码修改为调用C语言函数;
步骤104:将转换为的C语言源码混淆编译并生成so文件;
步骤105:将步骤103修改后的smali源码生成为保护后的DEX文件;
作为本发明进一步的改进,步骤101中,使用apktool将待保护的DEX文件反编译为smali源码。
作为本发明进一步的改进,步骤102中,将所述smali源码中需要保护的方法的源码转换为C语言源码,但必须保持Java类中的属性定义,不能修改属性定义的源码。
作为本发明进一步的改进,步骤102中中具体包含:
步骤S1,对smali源码中需要保护的源码进行词法分析,将smali指令分解,去除注释和无关逻辑的代码,解析出常量、标签、指令操作符、寄存器和其他smali语法中包含的词条;
步骤S2,将步骤S1的结果进行分类并进行语法分析;
步骤S3,根据语法分析结果和上下文关系,生成C语言源码。
本发明的有益效果为:通过使用源码转换技术将DEX文件中的代码转成另一种语言的源码来进行DEX文件隐藏,从而实现DEX文件保护。
附图说明
图1为本发明实施例所述的一种DEX文件的保护方法的流程图;
具体实施方式
下面通过具体的实施例并结合附图对本发明做进一步的详细描述。
如图1所示,本发明实施例所述的一种DEX的保护方法,该方法包括以下步骤:
步骤101:将待保护的DEX文件反编译为smali源码;
步骤102:将所述smali源码中需要保护的源码转换为C语言源码;
步骤103:将步骤102中转换的C语言源码修改为调用C语言函数;
步骤104:将转换为的C语言源码混淆编译并生成so文件;
步骤105:将步骤103中修改后的smali源码生成为保护后的DEX文件。
将DEX反汇编为smali源码再转成C语言源码来进行代码隐藏,将代码载体由DEX变为so。
进一步的,使用apktool将待保护的DEX文件反编译为smali源码。
进一步的,将所述smali源码中的需要保护的方法的源码转换为C语言源码。
进一步的,步骤102中具体包含:步骤S1,对smali源码中的需要保护的源码进行词法分析,将smali指令分解,去除注释和无关逻辑的代码,解析出常量、标签、指令操作符、寄存器和其他smali语法中包含的词条;步骤S2,将步骤S1的结果进行分类并进行语法分析,例如有一行smali源码为“add-int v0,v1,v2”,则S1步骤的结果将生成add-int,v0,v1,v2这4个词条,对这4个词条进行语法分析后,将重新组合为“v0=v1+v2;”以供后续步骤使用;步骤S3,根据语法分析结果和上下文关系,生成C语言源码。
so文件和保护后的DEX文件共同实现保护前的DEX文件的功能。当保护后的DEX文件被攻击时,攻击者将无法看到原有的smali源码,所有被保护的smali源码都被替换为so调用入口。例如一个Java源码为public int add(int a,int b){return a+b;},被保护前攻击者很容易阅读并修改它;而保护后该源码将变化为public int add(int a,int b){return_native_add(a,b);},攻击者将无法知道该源码做了什么,也无法对它进行修改。
本发明使用DEX隐藏的方法来进行DEX保护,将DEX中的代码转换为其他语言的源码实现的,但也可以将DEX中的字节码不进行反汇编为smali源码,而直接转换成其他语言来达到相同的隐藏效果。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种DEX文件的保护方法,其特征在于,该方法包括以下步骤:
步骤101:将待保护的DEX文件反编译为smali源码;
步骤102:将所述smali源码中需要保护的源码转换为C语言源码;
步骤103:将步骤102中转换的C语言源码修改为调用C语言函数;
步骤104:将转换为的C语言源码混淆编译并生成so文件;
步骤105:将步骤103中修改后的smali源码生成为保护后的DEX文件。
2.根据权利要求1所述的一种DEX文件的保护方法,其特征在于,步骤101中,使用apktool将待保护的DEX文件反编译为smali源码。
3.根据权利要求1所述的一种DEX文件的保护方法,其特征在于,步骤102中,将所述smali源码中的需要保护的方法的源码转换为C语言源码。
4.根据权利要求3所述的一种DEX文件的保护方法,其特征在于,步骤102中具体包含:
步骤S1,对smali源码中的部分源码进行词法分析,将smali指令分解,去除注释和无关逻辑的代码,解析出常量、标签、指令操作符、寄存器和其他smali语法中包含的词条;
步骤S2,将步骤S1的结果进行分类并进行语法分析;
步骤S3,根据语法分析结果和上下文关系,生成C语言源码。
CN201811410423.5A 2018-11-23 2018-11-23 一种dex的保护方法 Active CN109543369B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811410423.5A CN109543369B (zh) 2018-11-23 2018-11-23 一种dex的保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811410423.5A CN109543369B (zh) 2018-11-23 2018-11-23 一种dex的保护方法

Publications (2)

Publication Number Publication Date
CN109543369A true CN109543369A (zh) 2019-03-29
CN109543369B CN109543369B (zh) 2022-03-25

Family

ID=65849566

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811410423.5A Active CN109543369B (zh) 2018-11-23 2018-11-23 一种dex的保护方法

Country Status (1)

Country Link
CN (1) CN109543369B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111274551A (zh) * 2019-12-30 2020-06-12 上海上讯信息技术股份有限公司 基于编译器的java代码保护方法、装置及电子设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250231A1 (en) * 2007-04-03 2008-10-09 Kabushiki Kaisha Toshiba Program code conversion apparatus, program code conversion method and recording medium
WO2014142430A1 (ko) * 2013-03-15 2014-09-18 주식회사 에스이웍스 안드로이드에서의 dex파일 바이너리 난독화 방법
CN104463002A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 一种加固apk的方法和装置以及apk加固客户端和服务器
US20160239671A1 (en) * 2015-02-13 2016-08-18 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
CN106326694A (zh) * 2016-08-30 2017-01-11 北京鼎源科技有限公司 一种基于C源代码的混淆的Android应用加固方法
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106650341A (zh) * 2016-11-18 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于smali流程混淆技术的Android应用加固方法
CN106778103A (zh) * 2016-12-30 2017-05-31 上海掌门科技有限公司 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN108681457A (zh) * 2018-05-11 2018-10-19 西北大学 基于代码下沉与残码解释的Android应用程序保护方法
CN108733988A (zh) * 2017-04-19 2018-11-02 北京洋浦伟业科技发展有限公司 安卓平台上可执行程序的保护方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080250231A1 (en) * 2007-04-03 2008-10-09 Kabushiki Kaisha Toshiba Program code conversion apparatus, program code conversion method and recording medium
WO2014142430A1 (ko) * 2013-03-15 2014-09-18 주식회사 에스이웍스 안드로이드에서의 dex파일 바이너리 난독화 방법
CN104463002A (zh) * 2014-12-24 2015-03-25 北京奇虎科技有限公司 一种加固apk的方法和装置以及apk加固客户端和服务器
US20160239671A1 (en) * 2015-02-13 2016-08-18 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
CN106326694A (zh) * 2016-08-30 2017-01-11 北京鼎源科技有限公司 一种基于C源代码的混淆的Android应用加固方法
CN106650341A (zh) * 2016-11-18 2017-05-10 湖南鼎源蓝剑信息科技有限公司 基于smali流程混淆技术的Android应用加固方法
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106778103A (zh) * 2016-12-30 2017-05-31 上海掌门科技有限公司 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN108733988A (zh) * 2017-04-19 2018-11-02 北京洋浦伟业科技发展有限公司 安卓平台上可执行程序的保护方法
CN108681457A (zh) * 2018-05-11 2018-10-19 西北大学 基于代码下沉与残码解释的Android应用程序保护方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111274551A (zh) * 2019-12-30 2020-06-12 上海上讯信息技术股份有限公司 基于编译器的java代码保护方法、装置及电子设备
CN111274551B (zh) * 2019-12-30 2023-06-27 上海上讯信息技术股份有限公司 基于编译器的java代码保护方法、装置及电子设备

Also Published As

Publication number Publication date
CN109543369B (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CN106599628B (zh) 一种基于模块钩子的Python字节码文件保护方法
CN104866734B (zh) 一种dex文件的保护方法及装置
US8589897B2 (en) System and method for branch extraction obfuscation
CN103413073B (zh) 一种保护java可执行程序的方法及设备
CN103413075B (zh) 一种通过虚拟机保护java可执行程序的方法及设备
CN104463002B (zh) 一种加固apk的方法和装置以及apk加固客户端和服务器
CN108733988A (zh) 安卓平台上可执行程序的保护方法
WO2015058620A1 (en) Method and apparatus for generating installation package corresponding to an application and executing application
KR101234591B1 (ko) Jni를 이용한 안드로이드 난독화 방법
CN108932406A (zh) 虚拟化软件保护方法和装置
CN103324872A (zh) 基于指令混淆的Android应用程序保护方法及系统
CN103927164B (zh) 一种脚本混淆方法及系统
US20220374415A1 (en) Systems and methods for updating metadata
CN107291907B (zh) 一种业务数据多语言存储和查询方法及装置
CN108153518A (zh) 一种java程序反混淆方法及终端
CN109948308A (zh) 代码安全保护方法、装置、电子设备和计算机可读存储介质
CN101807239A (zh) 一种防止源代码反编译的方法
CN106778100B (zh) 基于安卓平台和ios平台的混淆编译方法及混淆编译器
CN109657488A (zh) 一种资源文件加密处理方法、智能终端及存储介质
CN103177199A (zh) 网页应用代码保护方法及系统和执行的提速方法及系统
CN107577925B (zh) 基于双重ARM指令虚拟的Android应用程序保护方法
CN110309631A (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
CN105335151A (zh) 安装文件的保护方法及装置
CN109697339A (zh) 一种基于动态虚拟指令变换的Android应用安全保护方法
CN112052433B (zh) 一种Jar文件的虚拟化保护方法、终端及存储介质

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