[发明专利]基于执行顺序和单点逻辑的源代码加固方法及装置有效
申请号: | 201810146606.4 | 申请日: | 2018-02-12 |
公开(公告)号: | CN108509772B | 公开(公告)日: | 2022-01-07 |
发明(设计)人: | 阚志刚;陈彪;王文洋;李世杰;尉爽生;卢佐华 | 申请(专利权)人: | 北京梆梆安全科技有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12;G06F21/14 |
代理公司: | 北京国昊天诚知识产权代理有限公司 11315 | 代理人: | 许志勇 |
地址: | 100083 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 执行 顺序 单点 逻辑 源代码 加固 方法 装置 | ||
1.一种基于执行顺序和单点逻辑的源代码加固方法,其特征在于,所述方法包括:
基于应用程序的原始源代码在编译或运行时的跳转逻辑,将所述原始源代码拆分成多个代码块;
基于所述原始源代码在编译或运行时的跳转逻辑,建立表征所述多个代码块的执行顺序的跳转表,所述跳转表中保存有代码块标记与代码块的地址的对应关系;其中,所述地址为加固后的第二源代码在编译或运行时、代码块在内存中的地址,所述代码块标记用于访问对应的代码块的地址;
将所述原始源代码的代码块之间的跳转逻辑,通过所述跳转表中的代码块标记实现,以生成加固后的第一源代码;
使用不透明谓词对所述第一源代码的函数中的条件变量进行模糊处理,得到所述加固后的第二源代码;
其中,所述将所述原始源代码的代码块之间的跳转逻辑,通过所述跳转表中的代码块标记实现,包括:
确定第一代码块在所述原始源代码中的初始位置;
在所述原始源代码的第一位置插入所述第一代码块,所述第一位置与所述初始位置不同;
将位于所述初始位置的所述第一代码块替换为第一预设代码,所述第一预设代码包括:第一预设跳转语句和第一代码块标记;其中,所述第一预设跳转语句用于访问所述第一代码块标记,所述第一代码块标记用于访问所述第一代码块对应的地址,以执行所述第一代码块;
确定第二代码块,所述第二代码块为所述原始源代码在编译或运行时,执行完所述第一代码块后需要执行的下一代码块;
在插入所述第一位置的第一代码块的结尾插入第二预设代码,所述第二预设代码包括:第二预设跳转语句和第二代码块标记;其中,所述第二预设跳转语句用于访问所述第二代码块标记,所述第二代码块标记用于访问所述第二代码块对应的地址,以执行所述第二代码块。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述第一预设代码和/或所述第二预设代码进行加密。
3.根据权利要求1-2任一项所述的方法,其特征在于,所述方法还包括:
对所述跳转表进行加密。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将加固后的所述源代码存储至第一文件中;
将加密后的所述跳转表存储至第二文件中;
其中,所述第一文件和所述第二文件为不同的文件。
5.根据权利要求1所述的方法,其特征在于,所述使用不透明谓词对所述第一源代码的函数中的条件变量进行模糊处理,包括:
确定所述第一源代码的函数中的第一条件变量;
在所述第一条件变量中添加至少一个不透明谓词,得到第二条件变量,所述不透明谓词的值恒定;
利用所述第二条件变量替换所述第一条件变量。
6.根据权利要求5所述的方法,其特征在于,所述不透明谓词为恒为真或恒为假的函数表达式。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京梆梆安全科技有限公司,未经北京梆梆安全科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810146606.4/1.html,转载请声明来源钻瓜专利网。