[发明专利]阻止应用程序代码被静态分析的方法及装置有效
申请号: | 201910905676.8 | 申请日: | 2019-09-20 |
公开(公告)号: | CN112541188B | 公开(公告)日: | 2022-05-13 |
发明(设计)人: | 周志刚 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F21/62 | 分类号: | G06F21/62 |
代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
地址: | 430000 湖北省武汉市东湖开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 阻止 应用程序 代码 静态 分析 方法 装置 | ||
本申请公开了一种阻止应用程序代码被静态分析的方法及装置,涉及信息安全技术领域。其中,所述方法通过在应用程序代码的至少一个功能函数中插入干扰代码,并通过所述干扰代码在所述应用程序代码中构成一虚假分支函数,使得该虚假分支函数在应用程序代码被静态分析时对基址寄存器和堆栈寄存器进行操作。通过该方法,可以干扰应用程序代码被静态分析时基址寄存器和堆栈寄存器所获得的数据,从而防止黑客通过基址寄存器和堆栈寄存器中的数据得出该应用程序代码中的算法逻辑,进而达到防止开发人员的智力劳动成果泄露的目的。
技术领域
本申请涉及信息安全技术领域,具体而言,涉及一种阻止应用程序代码被静态分析的方法及装置。
背景技术
传统方案中,不管多么核心的验证功能,都是从算法的复杂度出发,使得应用程序的功能函数非常复杂。然而,对于黑客而言,依然可以借助一些静态代码分析工具(例如IDAPro)分析出应用程序中的每一个功能函数,同时还可以对每个功能函数进行反编译,得出其中的算法逻辑,导致开发人员的智力劳动成果泄露。
因此,对于本领域技术人员而言,为了保护应用程序开发者的智力劳动成果,急需研究一种能够干扰静态代码分析工具的方法,使得其分析出错,进而阻止应用程序代码被静态分析。
发明内容
本申请实施例通过提供一种阻止应用程序代码被静态分析的方法及装置,解决了现有技术中应用程序代码容易被静态分析的问题。
为了实现上述目的,本申请较佳实施例采用的技术方案如下:
第一方面,本申请实施例提供一种阻止应用程序代码被静态分析的方法,所述方法包括:
获取待处理的应用程序代码;
对所述应用程序代码进行函数拆解,得到所述应用程序代码中包含的多个功能函数;
根据预设的第一随机选择函数从所述多个功能函数中选取至少一个功能函数作为待修改函数;
获取所述待修改函数包含的代码块,其中,每一个所述待修改函数包含至少一个代码块;
根据预设的第二随机选择函数从每一个所述待修改函数中选取至少一个代码块作为待修改代码块;
在每一个所述待修改代码块中插入干扰代码,并通过所述干扰代码在所述应用程序代码中构成一虚假分支函数,以使得所述虚假分支函数在所述应用程序代码被静态分析时对基址寄存器和堆栈寄存器进行操作。
可选地,在本申请的一种实施例中,所述对所述应用程序代码进行函数拆解的步骤,包括:
调用预先配置的继承自FunctionPass的类函数;
基于LLVM编译器框架及所述类函数对所述应用程序代码进行处理,得到所述应用程序代码中包含的多个功能函数。
可选地,在本申请的一种实施例中,所述根据预设的第一随机选择函数从所述多个功能函数中选取至少一个功能函数作为待修改函数的步骤,包括:
针对所述应用程序代码包含的每一个功能函数分别生成一随机数;
判断每一个所述功能函数对应的随机数是否大于第一预设阈值;
若所述随机数大于所述第一预设阈值,则将所述随机数对应的功能函数作为待修改函数。
可选地,在本申请的一种实施例中,所述获取所述待修改函数包含的代码块的步骤,包括:
根据预先配置的for循环语句遍历用于存储所述待修改函数包含的代码块的第一链表,得到每一个所述待修改函数包含的代码块;
根据所述待修改函数中各个代码块之间的逻辑关系将每一个所述待修改函数包含的代码块存储到对应的第二链表中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910905676.8/2.html,转载请声明来源钻瓜专利网。