应用程序的处理方法及装置制造方法及图纸

技术编号:14803722 阅读:58 留言:0更新日期:2017-03-14 23:36
本发明专利技术公开了一种应用程序的处理方法和装置。所述方法包括:向所述应用程序添加壳程序;使用壳程序的可执行文件来替代所述应用程序的可执行文件;创建与所述壳程序的可执行文件相关联的壳程序执行入口,以替代与所述应用程序的可执行文件相对应的应用程序执行入口;向所述壳程序添加反调试代码,其中,所述壳程序的可执行文件在检测到应用程序正被非法调试时,调用反调试代码对所述应用程序的调试结果进行修改。这样通过跳出通常反调试手段的终止程序的固有思维,以混淆的调试结果来从逻辑上提升应用的破解难度。另外,该方法还可以与使用链接库及llvm等手段结合,由此为应用程序提供全方位的保护。

【技术实现步骤摘要】

本申请涉及应用程序保护,尤其涉及一种应用程序的处理方法和装置。
技术介绍
计算机与网络技术的快速发展与普及催生了庞大的软件产业。由于利益牵扯,软件业从发展之初就面临着非法破解的问题。早年通常是为了个人使用而进行的初级破解(例如,获取注册码以逃避购买),现今则是为了拿到源码将他人的劳动成果直接改头换面为新的应用程序。随着移动终端和游戏社区的兴旺发展,一个成功运营的应用通常能够带来巨大的利益,而这使得对应用的逆向破解变得愈发猖獗。因此,开发者需要不断完善应用自身的安全机制,以提升应用本身被逆向破解的难度。
技术实现思路
为了进一步完善应用的安全机制,本申请提出了一种应用程序的处理方法和装置,其通过改变现有的反调试思路来混淆破解者的逻辑判断,由此提升逆向难度,提高应用的保护水平。根据本申请的一个专利技术,提供了一种应用程序的处理方法,包括:向所述应用程序添加壳程序;使用壳程序的可执行文件来替代所述应用程序的可执行文件;创建与所述壳程序的可执行文件相关联的壳程序执行入口,以替代与所述应用程序的可执行文件相对应的应用程序执行入口;向所述壳程序添加反调试代码,其中,所述壳程序的可执行文件在检测到应用程序正被非法调试时,调用所述反调试代码对所述应用程序的调试结果进行修改。与现有的会终止调试的反调试策略不同,本申请通过入口隐藏以及能够混淆调试结果以混乱应用破解者逻辑推导的反调试代码来加大逆向难度,提高应用的保护水平。优选地,对所述应用程序添加壳程序可以包括:使用加密算法对所述应用程序的可执行文件进行加密;以及保存经加密的所述应用程序的可执行文件与所述应用程序执行入口并将与所述加密算法相对应的解密代码写入所述壳程序。由此,通过对应用加密并保存隐藏入口,进一步加大破解难度,提高应用的保护水平。优选地,壳程序的可执行文件在检测到应用程序未被非法调试的情况下,调用解密代码对已加密的应用程序的可执行文件进行解密。由此,在未被非法调试的情况下,可以正常执行应用程序。优选地,对所述应用程序添加壳程序的步骤还可以包括:将反重打包代码写入所述壳程序;压缩添加了所述壳程序的所述应用程序,以得到加壳程序;对所述加壳程序进行签名以得到原始签名值;以及将所述原始签名值上传到服务器,其中,在所述加壳程序运行时,所述壳程序的可执行文件调用所述反重打包代码,以获取所述加壳程序的签名值并将所述签名值上传所述服务器,以便所述服务器通过判断所述加壳程序的签名值与所述原始签名值是否相同来判断所述加壳应用是否已被重打包。由此,通过服务器端保存来实现对加壳程序的签名。此外,由于签名值的比较在服务器端而非本地进行,因此提升了反重打包的力度,从而进一步提高了应用的逆向难度。优选地,可以将所述反调试代码、所述解密代码和所述反重打包代码中的至少一项写入所述壳程序的动态链接库。由此,通过将各类反逆向代码写入链接库,使得破解者无法直接从更容易破解的可执行文件中获取上述代码,从而进一步提高应用的逆向难度。优选地,可以将所述反调试代码、所述解密代码和所述反重打包代码中的至少一项写入所述壳程序的静态链接库。这样,由于使用静态库能够隐藏相应的链接符号,因此加大了破解者的逆向难度,从而进一步提升应用的保护水平。优选地,还可以使用llvm对所述加壳应用进行编译。由此在不影响原程序流程运行结果的前提下对程序的代码混淆膨胀,让破解者难以找出源程序的代码关联,从而进一步提升逆向难度。根据本申请的另一个专利技术,提供了一种应用程序的处理装置,包括:加壳单元,用于向所述应用程序添加壳程序;可执行文件替代单元,使用壳程序的可执行文件来替代所述应用程序的可执行文件;入口替代单元,创建与所述壳程序的可执行文件相关联的壳程序执行入口,以替代与所述应用程序的可执行文件相对应的应用程序执行入口;代码添加单元,用于向所述壳程序添加反调试代码,其中,所述壳程序的可执行文件在检测到所述应用程序正被非法调试时,调用所述反调试代码对所述应用程序的调试结果进行修改。优选地,所述装置还可以包括:加密单元,用于使用加密算法对所述应用程序的可执行文件进行加密;以及保存单元,用于保存经加密的所述应用程序的可执行文件与所述应用程序执行入口并将与所述加密算法相对应的解密代码写入所述壳程序。优选地,所述装置还可以包括反重打包单元,用于:将反重打包代码写入所述壳程序;压缩添加了所述壳程序的所述应用程序,以得到加壳程序;对所述加壳程序进行签名以得到原始签名值;以及将所述原始签名值上传到服务器,其中,在所述加壳程序运行时,所述壳程序的可执行文件调用所述反重打包代码,以获取所述加壳程序的签名值并将所述签名值上传到所述服务器,以便所述服务器通过判断所述加壳程序的签名值与所述原始签名值是否相同来判断所述加壳应用是否已被重打包。优选地,所述代码写入单元将所述反调试代码、所述解密代码和所述反重打包代码中的至少一项写入所述壳程序的动态链接库。优选地,所述代码写入单元将所述反调试代码、所述解密代码和所述反重打包代码中的至少一项写入所述壳程序的静态链接库。优选地,所述处理装置还可以包括编译单元,用于使用llvm对所述加壳应用进行编译。通过使用上述反逆向方法和装置,能够层层提升应用的逆向难度,混淆破解者的视听,由此从实质上改善应用的保护水平。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1是用于实施本专利技术的示例性计算系统的框图。图2是根据本专利技术的一个实施例的应用程序的处理方法的流程图。图3是根据本专利技术的一个实施例的应用程序的处理装置的示意图。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。当前,随着各类在线社区和移动终端数量的日益庞大,产生了大量的第三方应用。由于可见的非法所得巨大,应用的逆向分析技术日益发展,加之大多数应用开发人员不懂逆向工程,使得对应用内源码的保护几乎形同虚设。非法拷贝、逆向工程、反编译、调试、破解、二本文档来自技高网...

【技术保护点】
一种应用程序的处理方法,包括:向所述应用程序添加壳程序;使用壳程序的可执行文件来替代所述应用程序的可执行文件;创建与所述壳程序的可执行文件相关联的壳程序执行入口,以替代与所述应用程序的可执行文件相对应的应用程序执行入口;向所述壳程序添加反调试代码,其中,所述壳程序的可执行文件在检测到所述应用程序正被非法调试时,调用所述反调试代码对所述应用程序的调试结果进行修改。

【技术特征摘要】
1.一种应用程序的处理方法,包括:
向所述应用程序添加壳程序;
使用壳程序的可执行文件来替代所述应用程序的可执行文件;
创建与所述壳程序的可执行文件相关联的壳程序执行入口,以替代与
所述应用程序的可执行文件相对应的应用程序执行入口;
向所述壳程序添加反调试代码,其中,所述壳程序的可执行文件在检
测到所述应用程序正被非法调试时,调用所述反调试代码对所述应用程序
的调试结果进行修改。
2.如权利要求1所述的方法,对所述应用程序添加壳程序的步骤包括:
使用加密算法对所述应用程序的可执行文件进行加密;以及
保存经加密的所述应用程序的可执行文件与所述应用程序执行入口,
并将与所述加密算法相对应的解密代码写入所述壳程序。
3.如权利要求2所述的方法,其中,
所述壳程序的可执行文件在检测到所述应用程序未被非法调试的情况
下,调用所述解密代码对已加密的所述应用程序的可执行文件进行解密。
4.如权利要求3所述的方法,其中,对所述应用程序添加壳程序的步
骤包括:
将反重打包代码写入所述壳程序;
压缩添加了所述壳程序的所述应用程序,以得到加壳程序;
对所述加壳程序进行签名以得到原始签名值;以及
将所述原始签名值上传到服务器,
其中,在所述加壳程序运行时,所述壳程序的可执行文件调用所述反
重打包代码,以获取所述加壳程序的签名值并将所述签名值上传到所述服
务器,以便所述服务器通过判断所述加壳程序的签名值与所述原始签名值
是否相同来判断所述加壳应用是否已被重打包。
5.如权利要求4所述的方法,其中,所述反调试代码、所述解密代码
和所述反重打包代码中的至少一项被写入所述壳程序的动态链接库或静态
链接库。
6.如权利要求4所述的方法,还包括:
使用llvm...

【专利技术属性】
技术研发人员:钟炳杰
申请(专利权)人:广州彩瞳网络技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1