[发明专利]一种用于保护代码安全的方法和装置有效
申请号: | 201210376495.9 | 申请日: | 2012-09-29 |
公开(公告)号: | CN103198240A | 公开(公告)日: | 2013-07-10 |
发明(设计)人: | 卢立祎;程龙 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F21/12 | 分类号: | G06F21/12 |
代理公司: | 北京信远达知识产权代理事务所(普通合伙) 11304 | 代理人: | 赵百令;刘大玲 |
地址: | 310052 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 保护 代码 安全 方法 装置 | ||
技术领域
本发明的实施方式涉及软件开发领域,更具体地,本发明的实施方式涉及一种适用于保护代码安全的方法和装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
在软件开发领域,如何保护程序代码的安全一直是人们所关注的问题。如果不对程序代码进行必要的保护措施,借助于一些第三方工具,就能轻而易举的获取程序代码,容易被破解和外挂,甚至被别的无良的人直接拿去改造重新发行。
在现有技术中,已经出现一些保护代码安全的方法,例如《QQ乐团》使用了代码混淆的方式对其游戏客户端进行加密保护。所谓代码混淆就是将原本人类能直接读懂的代码,用机器的方式转换为人类读写都非常晦涩的源代码,然后进行编译使用,比如将class Catclass Dog转换成class l0l1 class ll01等人类难以理解的代码,从而提高了源代码的安全性。
虽然代码混淆的方式在一定程度上可以避免源代码的泄漏。但是对于稍有基础的技术人员来说,通过已经被混淆的代码还原出编程者的原始意图也并非难事,因为经过混淆的代码依然有比较清晰的脉络,借助人力的翻译,将局部的代码反编译出来,就能破解软件的关键部分。
发明内容
但是,对于中间语言(IL)代码来说,其经过预编译生成的本地代码无法在Windows操作系统上运行使得无法广泛利用本地代码来保护代码安全。
因此在现有技术中,保护代码安全是非常令人烦恼的问题。
为此,非常需要一种改进的保护代码安全的方法,以使IL代码经过预编译生成的本地代码能够在Windows操作系统上运行,进而使利用本地代码保护代码安全得到广泛应用。
在本上下文中,本发明的实施方式期望提供一种用于保护代码安全的方法和装置。
在本发明实施方式的第一方面中,提供了一种用于保护代码安全的方法,例如可以包括:
将一个或多个IL代码函数预编译为本地代码;
在所述预编译过程中,将以特定字符为标志的汇编代码段删除以使所述本地代码能够在Windows操作系统下运行;
将经过预编译的所述一个或多个IL代码函数删除;
在所述经过预编译的一个或多个IL代码函数被运行时,以所述本地代码代替所述一个或多个IL代码函数运行。
优选地,其中所述以特定字符为标志的汇编代码段例如具体可以为以.local、.type.、和.size为标志的汇编代码。
在本发明的一个实施例中,该方法例如还可以包括:
在IL代码函数被运行时,判断所述IL代码函数是否执行过所述预编译;
如果是,以所述IL代码函数在所述预编译后生成的本地代码代替所述代码函数运行;
如果否,利用JIT编译所述IL代码函数。
在本发明的另一实施例中,该方法例如还可以包括:
在利用JIT编译所述IL代码函数时,判断内联inline优化操作展开的IL代码函数是否执行过所述预编译;
如果是,放弃inline优化操作。
优选地,其中所述判断IL代码函数是否执行过所述预编译,例如具体可以通过判断所述IL代码函数中首字节位置是否包含预设的固定标识符来确认是否执行过所述预编译,所述预设的固定标识符具体为非IL代码使用的字符。
优选地,该方法所述将经过预编译的所述一个或多个IL代码函数删除例如具体可以包括:
在所述预编译之后,生成所述IL代码函数的列表;
根据所述IL代码函数的列表,确定所述IL代码函数名和所述IL代码函数所在DLL文件;
在所述DLL文件中所述IL代码函数所在的首字节位置加入固定标识符,所述预设的固定标识符具体为非IL代码使用的字符;
将所述DLL文件中所述IL代码函数替换为乱码。
在本发明的又一个实施例中,该方法例如还可以包括:
从内存加载所述本地代码和/或未经编译的IL代码函数至执行程序用的内存。
优选地,其中所述从内存加载本地代码和/或未经编译的IL代码函数例如具体可以通过修改载入代码函数实现。
优选地,其中所述本地代码和/或未经编译的IL代码函数例如具体可以在客户端启动时,自动从服务器获取至内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210376495.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:汽车空调中心注入散射水雾高效散热器
- 下一篇:一种分力型塑料复合板的生产设备