CN105740661A - 一种保护应用程序的方法和装置 - Google Patents

一种保护应用程序的方法和装置 Download PDF

Info

Publication number
CN105740661A
CN105740661A CN201410767711.1A CN201410767711A CN105740661A CN 105740661 A CN105740661 A CN 105740661A CN 201410767711 A CN201410767711 A CN 201410767711A CN 105740661 A CN105740661 A CN 105740661A
Authority
CN
China
Prior art keywords
executable program
application program
file
program file
sensitive data
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
CN201410767711.1A
Other languages
English (en)
Other versions
CN105740661B (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.)
China Mobile Communications Group Co Ltd
Original Assignee
China Mobile Communications Group 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 China Mobile Communications Group Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201410767711.1A priority Critical patent/CN105740661B/zh
Publication of CN105740661A publication Critical patent/CN105740661A/zh
Application granted granted Critical
Publication of CN105740661B publication Critical patent/CN105740661B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种保护应用程序的方法和装置,用以解决现有技术中存在的应用程序对抗逆向工具时效果不佳,导致安全性较差的问题。该方法包括:在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;根据所述敏感数据,判断所述应用程序是否被篡改;当判断出所述应用程序被篡改时,输出预警提示;当判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。

Description

一种保护应用程序的方法和装置
技术领域
本发明涉及软件安全技术领域,尤其涉及一种保护应用程序的方法和装置。
背景技术
随着安卓系统的迅速发展,针对安卓软件的破解技术层出不穷,破解者使用各种逆向工具,对安卓软件进行逆向分析,从而篡改软件。被篡改过的软件为用户带来了极大的安全隐患,也威胁到原软件开发者的正当权益。
在防止软件被逆向工具逆向分析方面,业界通常针对特定逆向工具漏洞,在安卓软件中植入保护代码,使得特定逆向工具在逆向该软件时失效。
这种抗逆向手段的难点在于,既要让安卓软件的应用程序格式合法(即可以在安卓系统中正常启动),又要让逆向工具认为该应用程序不合法从而失效。
如何让安卓系统认为这是个合法的应用程序,又要让模拟安卓系统解析功能的逆向工具认为同一个应用程序不合法,一直是业界研究的方向之一。这需要对逆向工具极为熟悉,并找到逆向工具的漏洞才能实现。
即便找到了某个逆向工具的漏洞,使得这种逆向工具失效,破解者还可以选择其他的逆向工具完成软件的逆向分析。而且,很多破解者同样了解逆向工具的漏洞,这类破解者可以找到应用程序中针对某种逆向工具漏洞插入的保护代码,并对这部分代码进行改写,使之可以被该逆向工具逆向分析。因此,针对逆向工具漏洞植入保护代码的方案往往效果不佳。
发明内容
本发明实施例提供了一种保护应用程序的方法和装置,用以解决现有技术中存在的应用程序对抗逆向工具时效果不佳,导致安全性较差的问题。
本发明实施例采用以下技术方案:
本发明实施例提供了一种保护应用程序的方法,包括:
在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;
根据所述敏感数据,判断所述应用程序是否被篡改;
当判断出所述应用程序被篡改时,输出预警提示;
当判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
其中,所述当前可执行程序文件按照如下方式获得:
解析应用程序中可以正常运行的原可执行程序文件,对所述原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
其中,对所述原可执行程序文件中的预设字符进行修改,具体包括:
当所述预设字符包含所述原可执行程序文件中指定字符串的索引值时,将所述原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当所述预设字符包含指定结构在所述原可执行程序文件中的偏移地址时,将所述指定结构在所述原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当所述预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将所述指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
其中,所述敏感数据按照如下方式隐藏:
将所述敏感数据转换成图片数据;
将所述图片数据隐藏在所述应用程序的文件中。
其中,将所述图片数据隐藏在所述应用程序的文件中,具体包括:
将所述图片数据隐藏在所述应用程序的图片资源文件中的伪png格式的图片中;其中,所述伪png格式的图片是预先存储在所述应用程序的图片资源文件中的。
其中,在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据,具体包括:
在运行应用程序之前,获取隐藏在所述应用程序的文件中的图片数据;
从所述图片数据中获取敏感数据。
其中,所述敏感数据包括:所述当前可执行程序文件的哈希值和用于对所述当前可执行程序文件进行解密的解密密钥;则
根据所述敏感数据,判断所述应用程序是否被篡改,具体包括:
根据所述敏感数据中的解密密钥,对所述当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
计算所述解密后的当前可执行程序文件的哈希值;
当所述解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值不相同时,确定所述应用程序被篡改;
当所述解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值相同时,确定所述应用程序未被篡改。
其中,所述敏感数据包括:
所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值;则
根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件,具体包括:
根据所述敏感数据中的所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值,对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
本发明实施例提供了一种保护应用程序的装置,包括:
敏感数据获取单元,用于在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;
判断单元,用于根据所述敏感数据获取单元获取的敏感数据,判断所述应用程序是否被篡改;
预警单元,用于当所述判断单元判断出所述应用程序被篡改时,输出预警提示;
修复单元,用于当所述判断单元判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
其中,所述装置还包括:
当前可执行程序获得单元,用于解析应用程序中可以正常运行的原可执行程序文件,对所述原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
其中,所述当前可执行程序获得单元,具体用于:
当所述预设字符包含所述原可执行程序文件中指定字符串的索引值时,将所述原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当所述预设字符包含指定结构在所述原可执行程序文件中的偏移地址时,将所述指定结构在所述原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当所述预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将所述指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
其中,所述装置还包括:
敏感数据隐藏单元,用于将所述敏感数据转换成图片数据;将所述图片数据隐藏在所述应用程序的文件中。
其中,所述敏感数据隐藏单元,具体用于:
将所述图片数据隐藏在所述应用程序的图片资源文件中的伪png格式的图片中;其中,所述伪png格式的图片是预先存储在所述应用程序的图片资源文件中的。
其中,所述敏感数据获取单元,具体用于:
在运行应用程序之前,获取隐藏在所述应用程序的文件中的图片数据;从所述图片数据中获取敏感数据。
其中,所述敏感数据包括:所述当前可执行程序文件的哈希值和用于对所述当前可执行程序文件进行解密的解密密钥;则
所述判断单元,具体包括:
解密模块,用于根据所述敏感数据中的解密密钥,对所述当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
哈希值计算模块,用于计算所述解密模块解密后的当前可执行程序文件的哈希值;
判断结果处理模块,用于当所述哈希值计算模块计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值不相同时,确定所述应用程序被篡改;当所述哈希值计算模块计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值相同时,确定所述应用程序未被篡改。
其中,所述敏感数据包括:
所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值;则
所述修复单元,具体用于:
根据所述敏感数据中的所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值,对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
本发明实施例的有益效果如下:
本发明实施例中,在运行应用程序之前,应用程序中的当前可执行程序文件是无法正常运行的,通过获取隐藏在应用程序中的敏感数据,根据敏感数据判断应用程序是否时被篡改,当判断结果为是时,输出预警提示,当判断结果为否时,根据敏感数据对当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。由于在运行应用程序之前,应用程序中的当前可执行程序文件是无法正常运行的,因此无论破解者利用何种逆向工具进行分析,都会导致逆向工具失效,从而不容易被破解,提高了应用程序的安全性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例提供的一种保护应用程序的方法的实现流程图;
图2为本发明实施例在具体应用场景下的保护应用程序的方法在预处理过程的实现流程图;
图3为本发明实施例在具体应用场景下的保护应用程序的方法在应用程序启动之前的处理过程的实现流程图;
图4为本发明实施例提供的一种保护应用程序的装置的结构流程图。
具体实施方式
为了解决现有技术中存在的应用程序对抗逆向工具时效果不佳,导致安全性较差的问题,本发明实施例提供了一种保护应用程序的方案。该技术方案中,在运行应用程序之前,应用程序中的当前可执行程序文件是无法正常运行的,通过获取隐藏在应用程序中的敏感数据,根据敏感数据判断应用程序是否时被篡改,当判断结果为是时,输出预警提示,当判断结果为否时,根据敏感数据对当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。由于在运行应用程序之前,应用程序中的当前可执行程序文件是无法正常运行的,因此无论破解者利用何种逆向工具进行分析,都会导致逆向工具失效,从而不容易被破解,提高了应用程序的安全性。
以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限制本发明。并且在不冲突的情况下,本发明中的实施例及实施例的特征可以互相结合。
本发明实施例提供了一种保护应用程序的方法,如图1所示,为该方法的实现流程图,具体包括下述步骤:
步骤11,在运行应用程序之前,获取隐藏在应用程序中的敏感数据;其中,敏感数据是为保护应用程序而需要隐藏的数据,且应用程序中的当前可执行程序文件无法正常运行;
本发明实施例中,应用程序中的当前可执行程序文件可以但不限于按照如下方式获得:
解析应用程序中可以正常运行的原可执行程序文件,对该原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
其中,预设字符可以包括原可执行程序文件中指定字符串的索引值、指定结构在所述原可执行程序文件中的偏移地址和指定结构在所述原可执行程序文件中的指令编号中的至少一种。因此,解析应用程序中可以正常运行的原可执行程序文件时,可以先确定出到上述预设字符在原可执行程序文件的位置,然后对确定出的位置上的字符进行修改。
具体的,当预设字符包含原可执行程序文件中指定字符串的索引值时,将原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当预设字符包含指定结构在原可执行程序文件中的偏移地址时,将指定结构在原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
修改后的可执行程序文件无法正常运行,即为当前可执行程序文件。
另外,本发明实施例中,隐藏在应用程序中的敏感数据可以但不限于按照如下方式隐藏:
将敏感数据转换成图片数据,再将转换后的图片数据隐藏在应用程序的文件中。
其中,将敏感数据转换成图片数据的实现方式可以有多种方法,本发明实施例中介绍一种较优的方式:
首先,将敏感数据转换为数据矩阵;
其次,将数据矩阵中的矩阵元素转换为颜色值;
具体的,可以按照数据矩阵中的每个矩阵元素对应至少一个颜色值的转换规则,将数据矩阵中的矩阵元素转换为颜色值;或者按照数据矩阵中的每至少两个矩阵元素对应一个颜色值的转换规则,将数据矩阵中的矩阵元素转换为颜色值。其中,颜色值可以是预先设置的颜色模式(比如红绿蓝RGB颜色模式)下的颜色通道的值。
然后,根据矩阵元素转换后的颜色值,生成像素图;其中,矩阵元素转换后的每个颜色值为该像素图的一个像素点的颜色值。
最后,将生成的像素图确定为上述敏感数据转换后的图片数据。
需要说明的是,上述转换过程均为可逆的,即从数据矩阵中也可以逆向读取出原始的敏感数据,从颜色值中也可以逆向读取出原始的矩阵元素。
而将转换后的图片数据隐藏在应用程序的文件中,也可以由多种实现方式,比如将转换后的图片数据直接伪装成应用程序的图片资源,隐藏在应用程序的图片资源文件之中;或者可以将转换后的图片数据隐藏在应用程序的图片资源文件的某张图片资源中;还可以将转换后的图片数据隐藏在应用程序的图片资源文件中的伪png格式的图片中;其中,伪png格式的图片可以是预先存储在应用程序的图片资源文件中的。
所谓伪png格式的图片,指的是将原格式是非png格式(比如jpg格式)的图片的扩展名更改为.png。
之所以使用伪png格式的图片隐藏转换后的图片数据,是因为这种伪png格式的图片会导致逆向工具失效。
在上述隐藏方式下,步骤11可以具体包括:
在运行应用程序之前,获取隐藏在应用程序的文件中的图片数据;
从图片数据中获取敏感数据。
步骤12,根据获取的敏感数据,判断应用程序是否被篡改;
当敏感数据中包括当前可执行程序文件的哈希值和用于对当前可执行程序文件进行解密的解密密钥时,步骤12可以具体包括:
根据敏感数据中的解密密钥,对当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
计算解密后的当前可执行程序文件的哈希值;
当解密后的当前可执行程序文件的哈希值和敏感数据中的哈希值不相同时,确定应用程序被篡改;
当解密后的当前可执行程序文件的哈希值和敏感数据中的哈希值相同时,确定应用程序未被篡改。
步骤13,当判断出应用程序被篡改时,输出预警提示;
步骤14,当判断出应用程序未被篡改时,根据获取的敏感数据对当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
基于上述步骤11中对原可执行程序文件中的预设字符进行修改的过程,在对原可执行程序文件的预设字符进行修改,得到当前可执行程序文件之后,本发明实施例还可以包括:
记录预设字符修改后的字符对应的偏移位置和预设字符修改之前的原始值。
在这种情况下,敏感数据中应该包括上述记录的预设字符修改后的字符对应的偏移位置和预设字符修改之前的原始值。
此时步骤14可以具体包括:
根据敏感数据中的预设字符修改后的字符对应的偏移位置和预设字符修改之前的原始值,对当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
在本发明实施例中,由于在运行应用程序之前,应用程序中的当前可执行程序文件是无法正常运行的,因此无论破解者利用何种逆向工具进行分析,都会导致逆向工具失效,从而不容易被破解,提高了应用程序的安全性。
为了更好的理解本发明实施例,以下结合具体的实施对本发明实施例的具体实施过程进行说明。
如图2和图3所示,分别为本发明实施例在具体应用场景下的保护应用程序的方法的预处理过程和在应用程序启动之前的处理过程的实现流程图。本发明实施例以安卓Android系统下的应用程序为例。
步骤21-步骤27为预处理过程。
步骤21,解析应用程序中的可执行程序classes.dex文件,定位到预先指定的某个或某几个字符串索引值、预先指定的某结构在classes.dex文件中的偏移地址或指令编号在classes.dex文件中的位置。
步骤22,将上述索引值改为无效索引或改为指向其它内容的索引值,将上述偏移地址修改为无效或其它内容的地址,将上述指令编号修改为无效指令编号或其它指令编号,使classes.dex文件无法正常运行。
步骤23,记录修改的字符在classes.dex文件中的偏移地址,以及更改之前的原始值。
步骤24,计算更改过的classes.dex文件的哈希值。
步骤25,对更改过的classes.dex文件进行加密。
步骤26,将修改的字符在classes.dex文件中的偏移地址、更改之前的原始值、更改过的classes.dex文件的哈希值及加密密钥(也是解密密钥)等敏感数据转换为图片数据,伪装成应用程序的图片资源。
其中,将敏感数据转换为数据矩阵,该转换过程是可逆的,可以从数据矩阵中逆向读出原始数据。
再将数据矩阵中的矩阵元素的值转换为RGB颜色模式中颜色通道的值。该过程也是可逆的,可以将颜色通道的值转换回矩阵元素的值。
其中,可以将数据矩阵中的某个矩阵元素的值,转换为RGB颜色模式中某个或某几个颜色通道的值,构成一个颜色值;也可以同时将某几个矩阵元素的值转换成一个颜色值。
最后根据矩阵元素转换后的颜色值,生成像素图,即图片数据。具体的,将矩阵元素转换成的每个颜色值,设置成一个像素点的颜色值,生成一个像素点,而所有像素点组成一张像素图。该像素图中隐藏了数据矩阵。
步骤27,在应用程序的图片资源文件中加入一张非png格式(可以是jpg格式)的图片,将其扩展名更改为.png,将敏感数据转换后的图片数据隐藏在这张伪png格式的图片中。
步骤31-步骤37为应用程序的启动之前的处理过程:
本发明实施例在应用程序中加入一个预启动程序,该预启动程序在软件启动之前预先完成下述过程:
步骤31,从应用程序的图片资源文件中读取隐藏的敏感数据。
步骤32,利用敏感数据中的解密密钥,对应用程序中的classes.dex文件(注意,此时的classes.dex文件为更改过的classes.dex文件)进行解密。
步骤33,计算解密后的classes.dex文件的哈希值。
步骤34,将解密后的classes.dex文件的哈希值与敏感数据中的哈希值进行对比,如果相同进行步骤35;如果不同,则进行步骤37。
步骤35,根据敏感数据中的修改的字符的偏移地址和更改之前的原始值,对解密后的classes.dex文件进行修复。
步骤36,启动修复后的classes.dex文件。
步骤37,停止运行应用程序并对用户发出预警信息。
本发明实施例有如下优点:
1、对classes.dex文件进行了加密处理,密钥隐藏在了图片中,不易察觉。
2、即使有破解者找到了密钥对classes.dex文件进行了解密,拿到的将是一个不合法的classes.dex文件。因为本身不合法,该classes.dex文件无法被逆向工具逆向分析。
3、即使有容错能力较强的逆向工具可以反编译该classes.dex文件,破解者将面对因改写而混乱的程序代码。
4、假设破解者对程序代码强行进行了篡改。此时,一般的破解者会选择绕过原来的预启动程序,直接将篡改过的程序连同资源文件打包编译成新的应用程序。这样的应用程序由于缺少预启动程序,因此其classes.dex文件不会被修复,在安卓系统中无法运行。
5、即使破解者选择保留预启动程序,那么预启动程序在验证哈希值时,将发现classes.dex文件被篡改过,将停止运行,并向用户发出预警信息。
6、无论破解者是否选择保留预启动程序,在将篡改过的程序代码连同资源文件编译成应用程序时,均可能遇到编译工具失效的问题。因为很多编译工具不能处理非png格式的资源图片。
基于同一发明构思,本发明实施例中还分别提供了一种保护应用程序的装置,由于上述装置解决问题的原理与保护应用程序的的方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本发明实施例提供的保护应用程序的的装置的结构示意图,包括:
敏感数据获取单元41,用于在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;
判断单元42,用于根据所述敏感数据获取单元41获取的敏感数据,判断所述应用程序是否被篡改;
预警单元43,用于当所述判断单元42判断出所述应用程序被篡改时,输出预警提示;
修复单元44,用于当所述判断单元42判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
其中,所述装置还包括:
当前可执行程序获得单元45,用于解析应用程序中可以正常运行的原可执行程序文件,对所述原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
其中,所述当前可执行程序获得单元45,具体用于:
当所述预设字符包含所述原可执行程序文件中指定字符串的索引值时,将所述原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当所述预设字符包含指定结构在所述原可执行程序文件中的偏移地址时,将所述指定结构在所述原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当所述预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将所述指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
其中,所述装置还包括:
敏感数据隐藏单元46,用于将所述敏感数据转换成图片数据;将所述图片数据隐藏在所述应用程序的文件中。
其中,所述敏感数据隐藏单元46,具体用于:
将所述图片数据隐藏在所述应用程序的图片资源文件中的伪png格式的图片中;其中,所述伪png格式的图片是预先存储在所述应用程序的图片资源文件中的。
其中,所述敏感数据获取单元41,具体用于:
在运行应用程序之前,获取隐藏在所述应用程序的文件中的图片数据;从所述图片数据中获取敏感数据。
其中,所述敏感数据包括:所述当前可执行程序文件的哈希值和用于对所述当前可执行程序文件进行解密的解密密钥;则
所述判断单元42,具体包括:
解密模块421,用于根据所述敏感数据中的解密密钥,对所述当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
哈希值计算模块422,用于计算所述解密模块421解密后的当前可执行程序文件的哈希值;
判断结果处理模块423,用于当所述哈希值计算模块423计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值不相同时,确定所述应用程序被篡改;当所述哈希值计算模块423计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值相同时,确定所述应用程序未被篡改。
其中,所述敏感数据包括:
所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值;则
所述修复单元44,具体用于:
根据所述敏感数据中的所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值,对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种保护应用程序的方法,其特征在于,包括:
在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;
根据所述敏感数据,判断所述应用程序是否被篡改;
当判断出所述应用程序被篡改时,输出预警提示;
当判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
2.如权利要求1所述的方法,其特征在于,所述当前可执行程序文件按照如下方式获得:
解析应用程序中可以正常运行的原可执行程序文件,对所述原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
3.如权利要求2所述的方法,其特征在于,对所述原可执行程序文件中的预设字符进行修改,具体包括:
当所述预设字符包含所述原可执行程序文件中指定字符串的索引值时,将所述原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当所述预设字符包含指定结构在所述原可执行程序文件中的偏移地址时,将所述指定结构在所述原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当所述预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将所述指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
4.如权利要求1所述的方法,其特征在于,所述敏感数据按照如下方式隐藏:
将所述敏感数据转换成图片数据;
将所述图片数据隐藏在所述应用程序的文件中。
5.如权利要求4所述的方法,其特征在于,将所述图片数据隐藏在所述应用程序的文件中,具体包括:
将所述图片数据隐藏在所述应用程序的图片资源文件中的伪png格式的图片中;其中,所述伪png格式的图片是预先存储在所述应用程序的图片资源文件中的。
6.如权利要求4所述的方法,其特征在于,在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据,具体包括:
在运行应用程序之前,获取隐藏在所述应用程序的文件中的图片数据;
从所述图片数据中获取敏感数据。
7.如权利要求6所述的方法,其特征在于,所述敏感数据包括:所述当前可执行程序文件的哈希值和用于对所述当前可执行程序文件进行解密的解密密钥;则
根据所述敏感数据,判断所述应用程序是否被篡改,具体包括:
根据所述敏感数据中的解密密钥,对所述当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
计算所述解密后的当前可执行程序文件的哈希值;
当所述解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值不相同时,确定所述应用程序被篡改;
当所述解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值相同时,确定所述应用程序未被篡改。
8.如权利要求2所述的方法,其特征在于,所述敏感数据包括:
所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值;则
根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件,具体包括:
根据所述敏感数据中的所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值,对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
9.一种保护应用程序的装置,其特征在于,包括:
敏感数据获取单元,用于在运行应用程序之前,获取隐藏在所述应用程序中的敏感数据;其中,所述敏感数据是为保护所述应用程序而需要隐藏的数据,且所述应用程序中的当前可执行程序文件无法正常运行;
判断单元,用于根据所述敏感数据获取单元获取的敏感数据,判断所述应用程序是否被篡改;
预警单元,用于当所述判断单元判断出所述应用程序被篡改时,输出预警提示;
修复单元,用于当所述判断单元判断出所述应用程序未被篡改时,根据所述敏感数据对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
当前可执行程序获得单元,用于解析应用程序中可以正常运行的原可执行程序文件,对所述原可执行程序文件中的预设字符进行修改,得到修改后的当前可执行程序文件。
11.如权利要求10所述的装置,其特征在于,所述当前可执行程序获得单元,具体用于:
当所述预设字符包含所述原可执行程序文件中指定字符串的索引值时,将所述原可执行程序文件中指定字符串的索引值修改为无效索引值或指向其它内容的索引值;
当所述预设字符包含指定结构在所述原可执行程序文件中的偏移地址时,将所述指定结构在所述原可执行程序文件中的偏移地址修改为无效地址或其它内容的地址;
当所述预设字符包含指定结构在所述原可执行程序文件中的指令编号时,将所述指定结构在所述原可执行程序文件中的指令编号修改为无效指令编号或其它指令编号。
12.如权利要求9所述的装置,其特征在于,所述装置还包括:
敏感数据隐藏单元,用于将所述敏感数据转换成图片数据;将所述图片数据隐藏在所述应用程序的文件中。
13.如权利要求12所述的装置,其特征在于,所述敏感数据隐藏单元,具体用于:
将所述图片数据隐藏在所述应用程序的图片资源文件中的伪png格式的图片中;其中,所述伪png格式的图片是预先存储在所述应用程序的图片资源文件中的。
14.如权利要求12所述的装置,其特征在于,所述敏感数据获取单元,具体用于:
在运行应用程序之前,获取隐藏在所述应用程序的文件中的图片数据;从所述图片数据中获取敏感数据。
15.如权利要求14所述的装置,其特征在于,所述敏感数据包括:所述当前可执行程序文件的哈希值和用于对所述当前可执行程序文件进行解密的解密密钥;则
所述判断单元,具体包括:
解密模块,用于根据所述敏感数据中的解密密钥,对所述当前可执行程序文件进行解密,得到解密后的当前可执行程序文件;
哈希值计算模块,用于计算所述解密模块解密后的当前可执行程序文件的哈希值;
判断结果处理模块,用于当所述哈希值计算模块计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值不相同时,确定所述应用程序被篡改;当所述哈希值计算模块计算的解密后的当前可执行程序文件的哈希值和所述敏感数据中的哈希值相同时,确定所述应用程序未被篡改。
16.如权利要求11所述的装置,其特征在于,所述敏感数据包括:
所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值;则
所述修复单元,具体用于:
根据所述敏感数据中的所述预设字符修改后的字符对应的偏移位置和所述预设字符修改之前的原始值,对所述当前可执行程序文件进行修复,得到可以正常运行的原可执行程序文件。
CN201410767711.1A 2014-12-11 2014-12-11 一种保护应用程序的方法和装置 Active CN105740661B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410767711.1A CN105740661B (zh) 2014-12-11 2014-12-11 一种保护应用程序的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410767711.1A CN105740661B (zh) 2014-12-11 2014-12-11 一种保护应用程序的方法和装置

Publications (2)

Publication Number Publication Date
CN105740661A true CN105740661A (zh) 2016-07-06
CN105740661B CN105740661B (zh) 2019-06-25

Family

ID=56241516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410767711.1A Active CN105740661B (zh) 2014-12-11 2014-12-11 一种保护应用程序的方法和装置

Country Status (1)

Country Link
CN (1) CN105740661B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106412102A (zh) * 2016-10-28 2017-02-15 努比亚技术有限公司 一种防止应用被反编译的装置和方法
CN107065820A (zh) * 2016-12-31 2017-08-18 深圳市优必选科技有限公司 一种舵机信息防丢失方法及装置
CN112733188A (zh) * 2021-01-13 2021-04-30 航天晨光股份有限公司 一种敏感文件管理方法
CN112765608A (zh) * 2021-01-20 2021-05-07 每日互动股份有限公司 目标apk源代码获取方法、电子设备和介质
CN114416108A (zh) * 2022-03-30 2022-04-29 北京全路通信信号研究设计院集团有限公司 基于Android资源文件索引表对抗反编译的方法、系统及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101847249A (zh) * 2009-03-27 2010-09-29 上海德通能源环保科技有限公司 一种图像数字水印的实现方法
CN102004887B (zh) * 2010-12-27 2015-05-27 用友软件股份有限公司 程序保护方法和装置
CN103778590B (zh) * 2012-10-24 2017-03-29 航天信息股份有限公司 利用数字图像存储和传输信息的方法和装置
CN103559251B (zh) * 2013-11-03 2016-09-21 广西师范大学 基于信息隐藏的数据安全保护方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106412102A (zh) * 2016-10-28 2017-02-15 努比亚技术有限公司 一种防止应用被反编译的装置和方法
CN107065820A (zh) * 2016-12-31 2017-08-18 深圳市优必选科技有限公司 一种舵机信息防丢失方法及装置
CN107065820B (zh) * 2016-12-31 2019-06-21 深圳市优必选科技有限公司 一种舵机信息防丢失方法及装置
CN112733188A (zh) * 2021-01-13 2021-04-30 航天晨光股份有限公司 一种敏感文件管理方法
CN112733188B (zh) * 2021-01-13 2023-09-22 航天晨光股份有限公司 一种敏感文件管理方法
CN112765608A (zh) * 2021-01-20 2021-05-07 每日互动股份有限公司 目标apk源代码获取方法、电子设备和介质
CN114416108A (zh) * 2022-03-30 2022-04-29 北京全路通信信号研究设计院集团有限公司 基于Android资源文件索引表对抗反编译的方法、系统及装置

Also Published As

Publication number Publication date
CN105740661B (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
CN105740661A (zh) 一种保护应用程序的方法和装置
CN105408912B (zh) 处理认证和资源许可
KR101518420B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
CN109313677B (zh) 用于动态可执行验证的方法和装置
US8015239B2 (en) Method and system to reduce false positives within an automated software-testing environment
CN110532811B (zh) 一种pdf签章方法及pdf签章系统
CN102576391B (zh) 嵌入在shell代码中的软件许可
CN104200150B (zh) 验证码处理方法和装置
US20160357530A1 (en) Method and apparatus for intermediate representation of applications
TWI541669B (zh) Detection systems and methods for static detection applications, and computer program products
EP2677451B1 (en) License verification method and apparatus, and computer readable storage medium storing program therefor
KR20150122149A (ko) 컴파일러 기반 난독화 기법
US20130091382A1 (en) Modeling Test Space for System behavior with Optional Variable combinations
CN105022936A (zh) 一种类class文件加密解密方法和装置
CN104866739A (zh) 安卓系统中应用程序加密方法及系统
KR101861341B1 (ko) 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법
JP2004364070A (ja) マスキング可能な署名技術を用いた電子文書管理システム
US20110307952A1 (en) Electronic device with password generating function and method thereof
CN112231702B (zh) 应用保护方法、装置、设备及介质
US20140325409A1 (en) Active & Efficient Monitoring of a Graphical User Interface
CN112115427A (zh) 代码混淆方法、装置、电子设备及存储介质
CN104462930A (zh) 验证码生成方法和装置
CN107220167A (zh) 一种qat性能自动测试的方法
CN112084516A (zh) 安全保护cad图纸信息的方法及设备
CN111512307A (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