CN104951674A - 用于应用程序的信息隐藏方法 - Google Patents
用于应用程序的信息隐藏方法 Download PDFInfo
- Publication number
- CN104951674A CN104951674A CN201410120621.3A CN201410120621A CN104951674A CN 104951674 A CN104951674 A CN 104951674A CN 201410120621 A CN201410120621 A CN 201410120621A CN 104951674 A CN104951674 A CN 104951674A
- Authority
- CN
- China
- Prior art keywords
- character string
- encryption
- code
- application program
- destination application
- 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
Links
Abstract
本发明提出了用于应用程序的信息隐藏方法,所述方法包括:基于配置参数对目标应用程序的源代码或汇编代码中的明文字符串进行加密处理以隐藏所述明文字符串,其中,所述配置参数包括字符串筛选规则以及加密函数列表和对应的解密函数列表。本发明所公开的用于应用程序的信息隐藏方法能够对应用程序代码中使用的所有需要进行保护的明文字符串进行加密处理以获得增强的安全性。
Description
技术领域
本发明涉及信息隐藏方法,更具体地,涉及用于应用程序的信息隐藏方法。
背景技术
目前,随着计算机和网络应用的日益广泛以及不同领域的业务种类的日益丰富,基于特定操作系统的应用程序(例如运行于Android操作系统上的支付交易应用程序)的安全性变得越来越重要。
如本领域技术人员所知的,基于高级语言代码(例如JAVA代码)的应用程序在被编译生成后,其源代码中的涉及应用逻辑的字符串也被打包到生成在二进制文件中。由此,攻击者可以在逆向工程(即将二进制代码还原为源代码)的基础上通过字符串定位而分析应用程序代码,以得到该应用程序的完整的代码逻辑。因此,对基于高级语言代码(例如JAVA代码)的应用程序进行安全性保护随之变得越来越重要。
在现有的技术方案中,通常通过代码混淆的方式对应用程序进行安全性保护,例如,针对基于JAVA语言的应用程序,可以将具有明确含义的JAVA类名和方法名通过混淆而转换成一连串无意义的类名、方法名,从而打乱逆向工程的分析过程。
然而,现有的技术方案存在如下问题:由于仅仅对应用程序的一少部分具有明确含义的字符串(例如JAVA类名和方法名)进行了保护,而没有对应用程序代码中使用的其它明文字符串进行保护,故存在较大的潜在安全性隐患。
因此,存在如下需求:提供能够对应用程序代码中使用的所有需要进行保护的明文字符串进行加密处理以获得增强的安全性的信息隐藏方法。
发明内容
为了解决上述现有技术方案所存在的问题,本发明提出了能够对应用程序代码中使用的所有需要进行保护的明文字符串进行加密处理以获得增强的安全性的信息隐藏方法。
本发明的目的是通过以下技术方案实现的:
一种用于应用程序的信息隐藏方法,所述用于应用程序的信息隐藏方法包括:基于配置参数对目标应用程序的源代码或汇编代码中的明文字符串进行加密处理以隐藏所述明文字符串,其中,所述配置参数包括字符串筛选规则以及加密函数列表和对应的解密函数列表。
在上面所公开的方案中,优选地,所述方法进一步包括:如果所述目标应用程序是便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:
(A1)获取所述目标应用程序的源代码;
(A2)通过对所述源代码进行字符串扫描而获取所述源代码中的字符串;
(A3)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串;
(A4)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串;
(A5)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的应用程序代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的代码,并将其与该加密后的字符串相组合,并用所述组合替换原始代码中的与该加密后的字符串相对应的原始字符串;
(A6)编译所获得的新的应用程序代码以进行后续的操作。
在上面所公开的方案中,优选地,所述方法进一步包括:如果所述目标应用程序是不便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:
(B1)获取所述目标应用程序的可执行代码;
(B2)通过反汇编工具将所述可执行代码转换成汇编代码;
(B3)通过对所述汇编代码进行字符串扫描而获取所述汇编代码中的字符串;
(B4)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串;
(B5)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串;
(B6)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的汇编代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的汇编代码,并将其与该加密后的字符串相组合,并用所述组合替换原始汇编代码中的与该加密后的字符串相对应的原始字符串;
(B7)用所述反汇编工具将所获得的新的汇编代码重新打包以生成新的可执行代码,以便进行后续的操作。
在上面所公开的方案中,优选地,所述方法进一步包括:在需要运行所述目标应用程序时,将加密后的字符串作为与其相关联的解密函数的参数,并将该解密函数执行的结果作为原始字符串以替换所述目标应用程序源代码或汇编代码中的对应的加密后的代码,并随之实际运行所述目标应用程序。
在上面所公开的方案中,优选地,所述目标应用程序是在Android操作系统上运行的基于JAVA的应用程序。
本发明所公开的用于应用程序的信息隐藏方法具有以下优点:(1)由于应用程序代码中的所有需要保护的明文字符串均能够被加密,且仅在应用程序实际运行时才生成具有真实含义的字符串,故具有高度的安全性;(2)由于可以对需要进行保护的明文字符串进行配置,故具有高度的使用灵活性;(3)由于针对每个需要保护的明文字符串随机地选择加密函数,由此可以有效地防止单个加密函数被破解而导致全部加密字符串被解密的情况,故具有增强的安全性。
附图说明
结合附图,本发明的技术特征以及优点将会被本领域技术人员更好地理解,其中:
图1是根据本发明的实施例的用于应用程序的信息隐藏方法的关键处理的流程图。
具体实施方式
图1是根据本发明的实施例的用于应用程序的信息隐藏方法的关键处理的流程图。如图1所示,本发明所公开的用于应用程序的信息隐藏方法包括:基于配置参数对目标应用程序的源代码或汇编代码中的明文字符串进行加密处理以隐藏所述明文字符串,其中,所述配置参数包括字符串筛选规则以及加密函数列表和对应的解密函数列表。
优选地,本发明所公开的用于应用程序的信息隐藏方法进一步包括:如果所述目标应用程序是便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:(A1)获取所述目标应用程序的源代码;(A2)通过对所述源代码进行字符串扫描而获取所述源代码中的字符串;(A3)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串(即可以通过配置参数而设置某些特定的字符串不进行加密隐藏处理);(A4)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串(即针对每个需要加密的字符串,所采用的加密函数均是随机选择的);(A5)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的应用程序代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的代码(例如JAVA代码),并将其与该加密后的字符串相组合,并用所述组合替换原始代码中的与该加密后的字符串相对应的原始字符串;(A6)编译所获得的新的应用程序代码以进行后续的操作。
优选地,本发明所公开的用于应用程序的信息隐藏方法进一步包括:如果所述目标应用程序是不便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:(B1)获取所述目标应用程序的可执行代码(即经过编译后的代码);(B2)通过反汇编工具将所述可执行代码转换成汇编代码(例如可运行在Android操作系统上的应用程序的smali代码,其可以通过修改、重打包后再次生成可运行在Android操作系统上的应用程序)(B3)通过对所述汇编代码进行字符串扫描而获取所述汇编代码中的字符串;(B4)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串(即可以通过配置参数而设置某些特定的字符串不进行加密隐藏处理);(B5)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串(即针对每个需要加密的字符串,所采用的加密函数均是随机选择的);(B6)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的汇编代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的汇编代码(例如smali代码),并将其与该加密后的字符串相组合,并用所述组合替换原始汇编代码中的与该加密后的字符串相对应的原始字符串;(B7)用所述反汇编工具将所获得的新的汇编代码重新打包以生成新的可执行代码,以便进行后续的操作。
优选地,本发明所公开的用于应用程序的信息隐藏方法进一步包括:在需要运行所述目标应用程序时,将加密后的字符串作为与其相关联的解密函数的参数,并将该解密函数执行的结果作为原始字符串以替换所述目标应用程序源代码或汇编代码中的对应的加密后的代码,并随之实际运行所述目标应用程序。
示例性地,在本发明所公开的用于应用程序的信息隐藏方法中,所述目标应用程序是在Android操作系统上运行的基于JAVA的应用程序。
由上可见,本发明所公开的用于应用程序的信息隐藏方法具有下列优点:(1)由于应用程序代码中的所有需要保护的明文字符串均能够被加密,且仅在应用程序实际运行时才生成具有真实含义的字符串,故具有高度的安全性;(2)由于可以对需要进行保护的明文字符串进行配置,故具有高度的使用灵活性;(3)由于针对每个需要保护的明文字符串随机地选择加密函数,由此可以有效地防止单个加密函数被破解而导致全部加密字符串被解密的情况,故具有增强的安全性。
尽管本发明是通过上述的优选实施方式进行描述的,但是其实现形式并不局限于上述的实施方式。应该认识到:在不脱离本发明主旨和范围的情况下,本领域技术人员可以对本发明做出不同的变化和修改。
Claims (5)
1.一种用于应用程序的信息隐藏方法,所述用于应用程序的信息隐藏方法包括:基于配置参数对目标应用程序的源代码或汇编代码中的明文字符串进行加密处理以隐藏所述明文字符串,其中,所述配置参数包括字符串筛选规则以及加密函数列表和对应的解密函数列表。
2.根据权利要求1所述的用于应用程序的信息隐藏方法,其特征在于,所述方法进一步包括:如果所述目标应用程序是便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:
(A1)获取所述目标应用程序的源代码;
(A2)通过对所述源代码进行字符串扫描而获取所述源代码中的字符串;
(A3)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串;
(A4)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串;
(A5)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的应用程序代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的代码,并将其与该加密后的字符串相组合,并用所述组合替换原始代码中的与该加密后的字符串相对应的原始字符串;
(A6)编译所获得的新的应用程序代码以进行后续的操作。
3.根据权利要求2所述的用于应用程序的信息隐藏方法,其特征在于,所述方法进一步包括:如果所述目标应用程序是不便于获取源代码的应用程序,则以如下方式隐藏所述目标应用程序中的明文字符串:
(B1)获取所述目标应用程序的可执行代码;
(B2)通过反汇编工具将所述可执行代码转换成汇编代码;
(B3)通过对所述汇编代码进行字符串扫描而获取所述汇编代码中的字符串;
(B4)根据所述字符串筛选规则从所获取的字符串中筛选出需要加密的字符串;
(B5)针对每个需要加密的字符串执行如下操作,直至所有需要加密的字符串均被加密:从所述加密函数列表中随机地选择一个加密函数,并通过所选择的加密函数加密该需要加密的字符串,以生成加密后的字符串;
(B6)针对每个加密后的字符串执行如下操作,直至所有加密后的字符串均被处理完毕,以获得加密后的新的汇编代码:从所述解密函数列表中选择与该加密后的字符串的加密函数相对应的解密函数的汇编代码,并将其与该加密后的字符串相组合,并用所述组合替换原始汇编代码中的与该加密后的字符串相对应的原始字符串;
(B7)用所述反汇编工具将所获得的新的汇编代码重新打包以生成新的可执行代码,以便进行后续的操作。
4.根据权利要求3所述的用于应用程序的信息隐藏方法,其特征在于,所述方法进一步包括:在需要运行所述目标应用程序时,将加密后的字符串作为与其相关联的解密函数的参数,并将该解密函数执行的结果作为原始字符串以替换所述目标应用程序源代码或汇编代码中的对应的加密后的代码,并随之实际运行所述目标应用程序。
5.根据权利要求4所述的用于应用程序的信息隐藏方法,其特征在于,所述目标应用程序是在Android操作系统上运行的基于JAVA的应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410120621.3A CN104951674B (zh) | 2014-03-28 | 2014-03-28 | 用于应用程序的信息隐藏方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410120621.3A CN104951674B (zh) | 2014-03-28 | 2014-03-28 | 用于应用程序的信息隐藏方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951674A true CN104951674A (zh) | 2015-09-30 |
CN104951674B CN104951674B (zh) | 2018-01-23 |
Family
ID=54166327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410120621.3A Active CN104951674B (zh) | 2014-03-28 | 2014-03-28 | 用于应用程序的信息隐藏方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104951674B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326693A (zh) * | 2016-08-18 | 2017-01-11 | 广州优视网络科技有限公司 | 应用程序的代码混淆方法及装置 |
CN107122631A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种脚本文件的透明加密方法和装置 |
CN107194212A (zh) * | 2017-06-21 | 2017-09-22 | 株洲中车时代电气股份有限公司 | 一种显示器源代码中协议内容的保护方法 |
CN107844687A (zh) * | 2017-11-22 | 2018-03-27 | 上海勋立信息科技有限公司 | 一种安卓信息拦截方法及装置 |
CN108595921A (zh) * | 2018-03-22 | 2018-09-28 | 北京奇艺世纪科技有限公司 | 一种源代码中字符串的混淆方法和装置 |
CN108629162A (zh) * | 2017-03-23 | 2018-10-09 | 北京小唱科技有限公司 | 一种源代码防护方法及装置 |
CN111125644A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 应用产品的信息隐藏方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110004607A1 (en) * | 2009-05-28 | 2011-01-06 | Microsoft Corporation | Techniques for representing keywords in an encrypted search index to prevent histogram-based attacks |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN103530535A (zh) * | 2013-10-25 | 2014-01-22 | 苏州通付盾信息技术有限公司 | 一种Android平台应用程序保护的加脱壳方法 |
-
2014
- 2014-03-28 CN CN201410120621.3A patent/CN104951674B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110004607A1 (en) * | 2009-05-28 | 2011-01-06 | Microsoft Corporation | Techniques for representing keywords in an encrypted search index to prevent histogram-based attacks |
CN102346834A (zh) * | 2011-11-25 | 2012-02-08 | 武汉钢铁(集团)公司 | Java应用软件加密保护的方法 |
CN102708322A (zh) * | 2012-05-12 | 2012-10-03 | 北京深思洛克软件技术股份有限公司 | 安卓系统中java应用程序的保护方法 |
CN103530535A (zh) * | 2013-10-25 | 2014-01-22 | 苏州通付盾信息技术有限公司 | 一种Android平台应用程序保护的加脱壳方法 |
Non-Patent Citations (1)
Title |
---|
彭东海: "《基于DES算法加密的java源代码保护》", 《硅谷》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326693A (zh) * | 2016-08-18 | 2017-01-11 | 广州优视网络科技有限公司 | 应用程序的代码混淆方法及装置 |
CN108629162A (zh) * | 2017-03-23 | 2018-10-09 | 北京小唱科技有限公司 | 一种源代码防护方法及装置 |
CN108629162B (zh) * | 2017-03-23 | 2020-06-02 | 北京小唱科技有限公司 | 一种源代码防护方法及装置 |
CN107122631A (zh) * | 2017-04-26 | 2017-09-01 | 北京洋浦伟业科技发展有限公司 | 一种脚本文件的透明加密方法和装置 |
CN107194212A (zh) * | 2017-06-21 | 2017-09-22 | 株洲中车时代电气股份有限公司 | 一种显示器源代码中协议内容的保护方法 |
CN107194212B (zh) * | 2017-06-21 | 2020-04-17 | 株洲中车时代电气股份有限公司 | 一种显示器源代码中协议内容的保护方法 |
CN107844687A (zh) * | 2017-11-22 | 2018-03-27 | 上海勋立信息科技有限公司 | 一种安卓信息拦截方法及装置 |
CN107844687B (zh) * | 2017-11-22 | 2021-06-25 | 上海勋立信息科技有限公司 | 一种安卓信息拦截方法及装置 |
CN108595921A (zh) * | 2018-03-22 | 2018-09-28 | 北京奇艺世纪科技有限公司 | 一种源代码中字符串的混淆方法和装置 |
CN108595921B (zh) * | 2018-03-22 | 2020-11-13 | 北京奇艺世纪科技有限公司 | 一种源代码中字符串的混淆方法和装置 |
CN111125644A (zh) * | 2018-11-01 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 应用产品的信息隐藏方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104951674B (zh) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951674A (zh) | 用于应用程序的信息隐藏方法 | |
JP5996809B2 (ja) | コード難読化装置及びその方法 | |
CN104318135B (zh) | 一种基于可信执行环境的Java代码安全动态载入方法 | |
US9535942B2 (en) | Apparatus and method for managing APK file in an android platform | |
KR101328012B1 (ko) | 애플리케이션 코드 난독화 장치 및 그 방법 | |
CN104091100A (zh) | 一种基于编译中间结果的软件保护方法 | |
RU2439669C2 (ru) | Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения | |
CN108363911B (zh) | 一种Python脚本混淆、水印的方法及装置 | |
KR101521765B1 (ko) | 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법 | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
CN106126981B (zh) | 基于虚拟函数表替换的软件安全防护方法 | |
CN104680039B (zh) | 一种应用程序安装包的数据保护方法及装置 | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN101814124A (zh) | 一种基于Java的软件安全性加强的方法 | |
KR102433011B1 (ko) | Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 | |
CN106599628A (zh) | 一种基于模块钩子的Python字节码文件保护方法 | |
CN102542212B (zh) | 一种文本信息隐藏方法及装置 | |
CN102047220A (zh) | 生成软件应用程序的白盒实现的系统和方法 | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
KR101861341B1 (ko) | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 | |
CN106778100B (zh) | 基于安卓平台和ios平台的混淆编译方法及混淆编译器 | |
US10867017B2 (en) | Apparatus and method of providing security and apparatus and method of executing security for common intermediate language | |
Balachandran et al. | Software code obfuscation by hiding control flow information in stack | |
CN102609284A (zh) | 可执行文件安全加载的方法 | |
CN109992974A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |