CN105930745A - 一种基于Android平台的字符串加固方法 - Google Patents

一种基于Android平台的字符串加固方法 Download PDF

Info

Publication number
CN105930745A
CN105930745A CN201610262737.XA CN201610262737A CN105930745A CN 105930745 A CN105930745 A CN 105930745A CN 201610262737 A CN201610262737 A CN 201610262737A CN 105930745 A CN105930745 A CN 105930745A
Authority
CN
China
Prior art keywords
character string
string
code
const
app
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
CN201610262737.XA
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.)
Beijing Coralsec Technology Co Ltd
Original Assignee
Beijing Coralsec 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 Beijing Coralsec Technology Co Ltd filed Critical Beijing Coralsec Technology Co Ltd
Priority to CN201610262737.XA priority Critical patent/CN105930745A/zh
Publication of CN105930745A publication Critical patent/CN105930745A/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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种基于Android平台的字符串加固方法,属于移动应用安全领域。所述基于Android平台的字符串加固方法1、包括以下步骤:S1,采用字符串明文搜索算法甄别出DEX文件中哪些字符串需要加密;S2,采用加密算法加密第一步筛选出来的所述字符串的明文,得到相应字符串密文;S3,将步骤S2得到的所述字符串密文保存到APP的适当区域;S4,采用字符串密文搜索算法甄别出APP的哪些区域有所述字符串密文;S5,在使用所述字符串密文的代码之前插入匹配代码并解密代码,使APP使用所述字符串时得到的是字符串明文。本发明通过加固DEX文件字符串,使黑客即使获取到DEX文件明文也无法利用DEX文件字符串明文的提示作用破解APP,增加黑客破解APP的难度。

Description

一种基于Android平台的字符串加固方法
技术领域
本发明涉及移动应用安全领域,尤其涉及一种基于Android平台的字符串加固方法。
背景技术
AndroidAPP(以下简称APP)采用Java语言开发,编译得到的DEX文件保存能够被Java虚拟机执行的字节码,DEX文件能够被反编译成smali汇编代码甚至是Java源代码,导致APP容易被破解、纂改、二次打包等一系列的安全问题。在APP被破解的过程中,DEX文件所保存的字符串明文给黑客极大的提示作用,大大降低了APP被破解的难度。
现有的APP加固技术针对整个DEX文件做加固,通过给APP加壳把DEX文件加密,运行APP时,壳程序加载DEX文件到内存并解密,最后运行DEX文件。现有的APP加固技术并未针对DEX文件的字符串明文做加固,一旦黑客通过动态攻击手段从内存获取到DEX文件的明文,仍然能够利用DEX文件所保存的字符串明文的提示作用破解APP。
发明内容
本发明的目的在于提供一种基于Android平台的字符串加固方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种基于Android平台的字符串加固方法,包括以下步骤:
S1,采用字符串明文搜索算法甄别出DEX文件中哪些字符串需要加密;
S2,采用加密算法加密第一步筛选出来的所述字符串的明文,得到相应字符串密文;
S3,将步骤S2得到的所述字符串密文保存到APP的适当区域;
S4,采用字符串密文搜索算法甄别出APP的哪些区域有所述字符串密文;
S5,在使用所述字符串密文的代码之前插入匹配代码并解密代码,使APP使用所述字符串时得到的是字符串明文。
优选的,S1中的所述字符串明文搜索算法包括以下步骤:
S11,直接解析DEX文件或将DEX反编译成smali代码;
S12,搜索const-string、const-string/jumbo语句引用的字符串;
其中,所述const-string、const-string/jumbo语句引用的字符串即APP源码使用的字符串,是可以且需要加密的。
优选的,S2中的所述加密算法包括:DES加密算法、3DES加密算法、AES加密算法和ECC加密算法。
优选的,S3中适当的区域为DEX文件或独立的文件。
优选的,S4中的所述字符串密文搜索算法包括以下步骤:
S41,直接解析DEX文件或将DEX反编译成smali代码;
S42,搜索const-string、const-string/jumbo语句;
S43,S42中所述const-string、const-string/jumbo语句将字符串装入寄存器,以便随后的代码使用所述字符串;
S44,在所述const-string、const-string/jumbo语句中插入匹配代码并解密代码,即匹配代码搜索字符串密文,找到对应的所述字符串密文,解密代码把所述字符串密文解密成字符串明文;
S45,将S44中所述字符串明文装入所述寄存器,使随后的代码引用所述字符串时得到的是所述字符串明文,确保DEX正确运行。
优选的,所述DEX文件中除了所述APP源码使用的字符串以外,还有支撑性字符串,所述支撑性字符串用来支持DEX文件的运行,不能加密;
其中,所述支撑性字符串包括:类型名、类名、方法名、类的annotation和方法的annotation。
优选的,S1中获得的某些所述支撑性字符串与所述字符串的明文相同;
与所述字符串的明文相同的支撑性字符串明文不能从DEX文件删除或加密。
本发明的有益效果是:加密DEX文件的字符串明文,直到APP使用到某个字符串导致Java虚拟机将此字符串密文提取出来时才临时解密该字符串,使内存中的DEX文件保存的始终是字符串密文,防止黑客利用动态攻击手段获取到DEX文件明文时看到字符串明文。通过加固DEX文件字符串,使黑客即使获取到DEX文件明文也无法利用DEX文件字符串明文的提示作用破解APP,增加黑客破解APP的难度。
附图说明
图1是本发明基于Android平台的字符串加固方法的步骤。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
本方法具体实现过程:
1、采用字符串明文搜索算法甄别出DEX文件哪些字符串需要加密,称这些字符串为可加密字符串;
采用的所述字符串明文搜索算法可以是:直接解析DEX文件或者将DEX反编译成smali代码,搜索const-string、const-string/jumbo语句引用的字符串,这些字符串就是APP源码使用的字符串,是可以加密的;但不限于此算法。
DEX文件中除了APP源码使用的字符串以外,还有支撑性字符串,所述支撑性字符串包括:类型名、类名、方法名、类的annotation和方法的annotation等,所述支撑性字符串用来支持DEX文件的运行,不能加密。
2、采用加密算法加密第一步筛选出来的字符串明文,得到相应字符串密文;
采用的所述加密算法包括:DES加密算法、3DES加密算法、AES加密算法和ECC加密算法等;
但是,某些所述支撑性字符串可能有与可加密字符串相同,对于这种情况,相同的字符串明文不能从DEX文件删除或加密,否则,虚拟机会因为找不到所述支撑性字符串而使DEX运行崩溃。
3、将步骤2中得到的字符串密文保存到APP的适当区域,比如:DEX文件、独立的文件等。
4、采用字符串密文搜索算法甄别出APP在哪些区域使用可加密字符串,然后在使用可加密字符串代码之前插入匹配代码并解密代码,使APP使用字符串时得到的是字符串明文;
具体步骤为:
(1)直接解析DEX文件或将DEX反编译成smali代码;
(2)搜索const-string、const-string/jumbo语句;
(3)(2)中所述const-string、const-string/jumbo语句将字符串装入寄存器,以便随后的代码使用所述字符串;
(4)在所述const-string、const-string/jumbo语句中插入匹配代码并解密代码,即匹配代码搜索字符串密文,找到对应的所述字符串密文,解密代码把所述字符串密文解密成字符串明文;
(5)将(4)中所述字符串明文装入所述寄存器,使随后的代码引用所述字符串时得到的是所述字符串明文,确保DEX正确运行。
但不限于所述字符串密文搜索算法。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:加密DEX文件的字符串明文,直到APP使用到某个字符串导致Java虚拟机将此字符串密文提取出来时才临时解密该字符串,使内存中的DEX文件保存的始终是字符串密文,防止黑客利用动态攻击手段获取到DEX文件明文时看到字符串明文。通过加固DEX文件字符串,使黑客即使获取到DEX文件明文也无法利用DEX文件字符串明文的提示作用破解APP,增加黑客破解APP的难度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (9)

1.一种基于Android平台的字符串加固方法,其特征在于,包括以下步骤:
S1,采用字符串明文搜索算法甄别出DEX文件中哪些字符串需要加密;
S2,采用加密算法加密第一步筛选出来的所述字符串的明文,得到相应字符串密文;
S3,将步骤S2得到的所述字符串密文保存到APP的适当区域;
S4,采用字符串密文搜索算法甄别出APP的哪些区域有所述字符串密文;
S5,在使用所述字符串密文的代码之前插入匹配代码并解密代码,使APP使用所述字符串时得到的是字符串明文。
2.根据权利要求1所述的一种基于Android平台的字符串加固方法,其特征在于,S1中的所述字符串明文搜索算法包括以下步骤:
S11,直接解析DEX文件或将DEX反编译成smali代码;
S12,搜索const-string、const-string/jumbo语句引用的字符串;
其中,所述const-string、const-string/jumbo语句引用的字符串即APP源码使用的字符串,是可以且需要加密的。
3.根据权利要求2所述的一种基于Android平台的字符串加固方法,其特征在于,所述DEX文件中除了所述APP源码使用的字符串以外,还有支撑性字符串,所述支撑性字符串用来支持DEX文件的运行,不能加密。
4.根据权利要求3所述的一种基于Android平台的字符串加固方法,其特征在于,所述支撑性字符串包括:类型名、类名、方法名、类的annotation和方法的annotation。
5.根据权利要求1所述的一种基于Android平台的字符串加固方法,其特征在于,S2中的所述加密算法包括:DES加密算法、3DES加密算法、AES加密算法和ECC加密算法。
6.根据权利要求3所述的一种基于Android平台的字符串加固方法,其特征在于,S1中获得的某些所述支撑性字符串与所述字符串的明文相同。
7.根据权利要求6所述的一种基于Android平台的字符串加固方法,其特征在于,与所述字符串的明文相同的支撑性字符串明文不能从DEX文件删除或加密。
8.根据权利要求1所述的一种基于Android平台的字符串加固方法,其特征在于,所述S3中所述适当区域为DEX文件或独立的文件。
9.根据权利要求1所述的一种基于Android平台的字符串加固方法,其特征在于,S4中的所述字符串密文搜索算法包括以下步骤:
S41,直接解析DEX文件或将DEX反编译成smali代码;
S42,搜索const-string、const-string/jumbo语句;
S43,S42中所述const-string、const-string/jumbo语句将字符串装入寄存器,以便随后的代码使用所述字符串;
S44,在所述const-string、const-string/jumbo语句中插入匹配代码并解密代码,即匹配代码搜索字符串密文,找到对应的所述字符串密文,解密代码把所述字符串密文解密成字符串明文;
S45,将S44中所述字符串明文装入所述寄存器,使随后的代码引用所述字符串时得到的是所述字符串明文,确保DEX正确运行。
CN201610262737.XA 2016-04-25 2016-04-25 一种基于Android平台的字符串加固方法 Pending CN105930745A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610262737.XA CN105930745A (zh) 2016-04-25 2016-04-25 一种基于Android平台的字符串加固方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610262737.XA CN105930745A (zh) 2016-04-25 2016-04-25 一种基于Android平台的字符串加固方法

Publications (1)

Publication Number Publication Date
CN105930745A true CN105930745A (zh) 2016-09-07

Family

ID=56837166

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610262737.XA Pending CN105930745A (zh) 2016-04-25 2016-04-25 一种基于Android平台的字符串加固方法

Country Status (1)

Country Link
CN (1) CN105930745A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107871065A (zh) * 2016-09-27 2018-04-03 武汉安天信息技术有限责任公司 一种Dalvik模式下dex文件的保护方法及装置
CN108932436A (zh) * 2018-07-06 2018-12-04 四川长虹电器股份有限公司 一种基于安卓系统的app说明书的软件安全加固方法
CN109271759A (zh) * 2018-09-26 2019-01-25 杭州凯米科技有限公司 基于安卓平台的so文件安全加固技术方法
CN109344574A (zh) * 2018-09-19 2019-02-15 四川长虹电器股份有限公司 一种基于说明书的自适应安卓加固方法
CN110059455A (zh) * 2019-04-09 2019-07-26 北京迈格威科技有限公司 代码加密方法、装置、电子设备和计算机可读存储介质
CN110135131A (zh) * 2019-05-13 2019-08-16 北京智游网安科技有限公司 一种应用程序的加密方法、存储介质及终端设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102143A1 (en) * 2010-10-22 2012-04-26 Sateesh Mandre Method and system of securing data over networks
US8738931B1 (en) * 2013-10-21 2014-05-27 Conley Jack Funk Method for determining and protecting proprietary source code using mnemonic identifiers
CN103902858A (zh) * 2013-12-25 2014-07-02 武汉安天信息技术有限责任公司 一种apk应用加固的方法及系统
CN104077504A (zh) * 2013-03-25 2014-10-01 联想(北京)有限公司 一种应用程序加密的方法及装置
CN104462959A (zh) * 2014-12-04 2015-03-25 北京奇虎科技有限公司 一种安卓应用的加固保护方法、服务器和系统
CN104751024A (zh) * 2013-12-27 2015-07-01 腾讯科技(深圳)有限公司 一种对核心源代码进行加密的方法及装置
CN104866740A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种防静态分析文件的方法及装置
CN105335151A (zh) * 2014-08-14 2016-02-17 优视科技有限公司 安装文件的保护方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120102143A1 (en) * 2010-10-22 2012-04-26 Sateesh Mandre Method and system of securing data over networks
CN104077504A (zh) * 2013-03-25 2014-10-01 联想(北京)有限公司 一种应用程序加密的方法及装置
US8738931B1 (en) * 2013-10-21 2014-05-27 Conley Jack Funk Method for determining and protecting proprietary source code using mnemonic identifiers
CN103902858A (zh) * 2013-12-25 2014-07-02 武汉安天信息技术有限责任公司 一种apk应用加固的方法及系统
CN104751024A (zh) * 2013-12-27 2015-07-01 腾讯科技(深圳)有限公司 一种对核心源代码进行加密的方法及装置
CN104866740A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种防静态分析文件的方法及装置
CN105335151A (zh) * 2014-08-14 2016-02-17 优视科技有限公司 安装文件的保护方法及装置
CN104462959A (zh) * 2014-12-04 2015-03-25 北京奇虎科技有限公司 一种安卓应用的加固保护方法、服务器和系统

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107871065A (zh) * 2016-09-27 2018-04-03 武汉安天信息技术有限责任公司 一种Dalvik模式下dex文件的保护方法及装置
CN107871065B (zh) * 2016-09-27 2019-12-20 武汉安天信息技术有限责任公司 一种Dalvik模式下dex文件的保护方法及装置
CN108932436A (zh) * 2018-07-06 2018-12-04 四川长虹电器股份有限公司 一种基于安卓系统的app说明书的软件安全加固方法
CN109344574A (zh) * 2018-09-19 2019-02-15 四川长虹电器股份有限公司 一种基于说明书的自适应安卓加固方法
CN109344574B (zh) * 2018-09-19 2020-09-22 四川长虹电器股份有限公司 一种基于说明书的自适应安卓加固方法
CN109271759A (zh) * 2018-09-26 2019-01-25 杭州凯米科技有限公司 基于安卓平台的so文件安全加固技术方法
CN110059455A (zh) * 2019-04-09 2019-07-26 北京迈格威科技有限公司 代码加密方法、装置、电子设备和计算机可读存储介质
CN110135131A (zh) * 2019-05-13 2019-08-16 北京智游网安科技有限公司 一种应用程序的加密方法、存储介质及终端设备

Similar Documents

Publication Publication Date Title
CN105930745A (zh) 一种基于Android平台的字符串加固方法
CN105426708B (zh) 一种Android系统的应用程序的加固方法
CN106778103A (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
CN104539432B (zh) 一种对文件进行签名的方法和装置
CN105683990B (zh) 用于保护动态库的方法和装置
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
RU2019126645A (ru) Распечатывание данных с запечатывающим анклавом
US20160203087A1 (en) Method for providing security for common intermediate language-based program
CN104268444A (zh) 一种云OS Java源代码保护方法
CN106155729B (zh) Lua脚本热更新方法、装置及系统
US20150270974A1 (en) Method for Generating an HTML Document that Contains Encrypted Files and the Code Necessary for Decrypting Them When a Valid Passphrase is Provided
CN102236757A (zh) 一种适用于Android系统的软件保护方法及系统
CN107423626B (zh) 一种基于连续Hash值的BIOS更新信任链的方法
CN111191195A (zh) 一种用于保护apk的方法和装置
CN104135531B (zh) 一种Web软件的升级方法及装置
CN107430650A (zh) 保护计算机程序以抵御逆向工程
CN102135944A (zh) 一种在移动通讯设备中安全存储数据的方法
CN105184119B (zh) 一种软件的安全保护方法
CN105678120A (zh) 一种应用程序安全防护方法和服务器
CN109992974B (zh) 虚拟机字节码文件的保护方法、设备及可读存储介质
CN111181898A (zh) 基于后台服务器、app客户端的数据安全防护方法
CN109543366B (zh) 一种源代码加密方法及其装置和系统
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
CN110457872B (zh) 一种Android App应用资源的隐藏加固方法
CN110135131B (zh) 一种应用程序的加密方法、存储介质及终端设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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: 20160907