[发明专利]通过汇编实现代码混淆的编译方法和系统有效
申请号: | 201310258325.5 | 申请日: | 2013-06-26 |
公开(公告)号: | CN103324481A | 公开(公告)日: | 2013-09-25 |
发明(设计)人: | 洪珂;陈发民;陈鸿 | 申请(专利权)人: | 网宿科技股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 施浩 |
地址: | 200030 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 通过 汇编 实现 代码 混淆 编译 方法 系统 | ||
技术领域
本发明涉及Android(安卓)系统在ARM平台下的NDK编译,尤其涉及利用汇编代码隐藏敏感函数的调用细节的编译方法和系统。
背景技术
根据EnfoDesk易观智库产业数据库统计,截止2012年底中国移动互联网市场规模达到1500个亿,移动互联网用户超过5亿。在激烈的市场竞争条件下,企业使用软件加密技术保护自己的核心技术变得尤为重要。
代码混淆的主要目的是为了保护源代码,利用软件加密技术加密可执行程序和动态库,阻止反向工程。反向工程会带来许多问题,诸如知识产权泄露,程序弱点暴露易受攻击等。
除了代码混淆,软件加壳是使用最多的加密方法,其中在开源领域UPX表现最出色。
现有的软件加密方法有以下几种缺陷:
1,现有软件加密方法对Android平台的支持性不好,且软件无对应Android版本。
2,软件加壳会降低软件的运行速度,并且易导致程序不稳定。
3,软件加壳会增加可执行文件或者库文件的大小,明显的增大内存需求。
4,普通的代码混淆无法阻止通过反汇编得系统调用函数。
发明内容
本发明的目的在于解决上述问题,提供了一种通过汇编实现代码混淆的编译方法和系统,解决了安卓ARM平台下无法隐藏系统调用,通过反汇编核心技术容易被竞争队首破解的问题,从而增加软件被破解的难度。
本发明的技术方案为:本发明揭示了一种通过汇编实现代码混淆的编译方法,包括:
步骤1:编写核心函数;
步骤2:反汇编核心函数;
步骤3:创建可执行内存映射区;
步骤4:往内存映射区复制核心函数的汇编代码;
步骤5:执行内存映射区的汇编代码,生成混淆后的核心函数。
根据本发明的通过汇编实现代码混淆的编译方法的一实施例,步骤4中还包括对汇编代码的加密操作以及对汇编代码的解密操作。
根据本发明的通过汇编实现代码混淆的编译方法的一实施例,在步骤1中,采用Android NDK代码编写核心函数,抽取核心部分并写入到独立的核心函数中,并将系统调用或者标准C库替换为间接调用。
根据本发明的通过汇编实现代码混淆的编译方法的一实施例,在步骤2中,使用调式工具将核心函数的代码反汇编成ARM平台代码。
根据本发明的通过汇编实现代码混淆的编译方法的一实施例,在步骤3中,使用linux系统调用mmap创建内存映射区,并将汇编指令代码复制到内存映射区。
本发明还揭示了一种通过汇编实现代码混淆的编译系统,包括:
函数编写模块,编写核心函数;
函数反汇编模块,反汇编核心函数;
内存映射区创建模块,创建可执行内存映射区;
汇编代码复制模块,往内存映射区复制核心函数的汇编代码;
核心函数生成模块,执行内存映射区的汇编代码,生成混淆后的核心函数。
根据本发明的通过汇编实现代码混淆的编译系统的一实施例,汇编代码复制模块中还包括:
加密单元,实现汇编代码的加密操作;以及
解密单元,实现加密后的汇编代码的解密操作。
根据本发明的通过汇编实现代码混淆的编译系统的一实施例,函数编写模块采用Android NDK代码编写核心函数,抽取核心部分并写入到独立的核心函数中,并将系统调用或者标准C库替换为间接调用。
根据本发明的通过汇编实现代码混淆的编译系统的一实施例,函数反汇编模块使用调式工具将核心函数的代码反汇编成ARM平台代码。
根据本发明的通过汇编实现代码混淆的编译系统的一实施例,内存映射区创建模块中使用linux系统调用mmap创建内存映射区,并将汇编指令代码复制到内存映射区。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网宿科技股份有限公司,未经网宿科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310258325.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于地热地板保温层的聚苯乙烯泡沫塑料板
- 下一篇:一种便于连接的隔墙板