CN105930745A - 一种基于Android平台的字符串加固方法 - Google Patents
一种基于Android平台的字符串加固方法 Download PDFInfo
- 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
Links
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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2107—File 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平台的字符串加固方法。
背景技术
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正确运行。
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)
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)
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 | 优视科技有限公司 | 安装文件的保护方法及装置 |
-
2016
- 2016-04-25 CN CN201610262737.XA patent/CN105930745A/zh active Pending
Patent Citations (8)
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)
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 |