文档详情

比特平台常用软件保护技巧.pdf

发布:2017-07-20约1.76千字共21页下载文档
文本预览下载声明
比特平台常用软件保护技巧 北京比特安索信息技术有限公司  无论何种软件保护方式,其核心原理都是将易于复制的软件代码与不 易复制的软、硬件内容进行绑定。  可用于绑定的软、硬件内容可以是: 1. 任何具有唯一标识的硬件设备,CPU、BIOS、MAC、HardDisk、加密锁 2. 可用于标识用户身份的软件信息,机器名、用户名、系统信息、授权码 3. 多种以上信息的组合  源代码逆向工程  安全库替换  通信层模拟  软硬件信息复制  软件安全遵循木桶原理,系统的安全强度取决于其中最薄弱的环节。  应用程序代码是系统中唯一未经专门安全设计的代码,是最易逆向工 程的部分。所以,常用软件保护技巧主要是针对逆向工程破解。  所有的保护方法都可以被破解,不同的是破解者付出的时间和精力。 最好的保护方法,就是能够以最少的工作,换取破解者最多的付出。  对破解或盗用的追踪往往比保护本身更有效。这是因为破解的目的往 往是让软件能用,而不影响软件功能的追踪代码难以被发现和移除。  加密技巧的正确使用与软件的保护强度有很大关系。如果 加密策略过于简单,是比较容易被破解的。  正确地使用一些加密技巧,可以在工作量增加不多的情况 下,大大提高软件的保护强度,让破解者找不到头绪,或 者得不偿失。 1. 合理设置加密点 2. 有效运用不同类型的特征项 3. 调用、判断和执行操作分开 4. 合理使用返回结果 5. 增加随机性调用 6. 文件完整性检验 7. 外壳加密 8. 云验证  加密点:开发商程序中调用比特客户端库的位置  太密:影响程序进行效率  太少:容易被破解者绕过  合理:每个功能设置一到两个加密点  关联:加密点的调用结果最好能与后面程序的运行相关  只读:存储不可改变的关键参数  读写:存储允许改变的关键参数  算法:主要实现安全功能,因为是单向、不可知变换、与输入相关  密钥:对关键参数进行加密存储,仅在使用时解密  好的软件保护方法是将软件本身与API及其相关数据结合 成一个整体,这样任何将软件与保护方案进行分离的尝试 都会导致软件无法运行。  比如,对软件中使用的关键数据或字符串,可以: ◦ 用“读写”和“只读”特征项存储较短的数据(不大于4字节), 或者使用“配置项”存储较长的数据(不大于1023字节) ◦ 可以使用API调用结果动态变换生成程序需要的数据常量或字符串。 ◦ 对一些关键数据,可以以加密的形式存储在本地或服务器上,加密 密钥使用密钥特征项。  时间随机:按周、月、年中的某一天随机调用,隐形炸弹  参数随机:随机调用特征项,或用随机因子做特征项输入(主要是针 对算法特征项,可以预先建立一个或多个输入输出表,每次调用时随 机选择一个输入值。或每次软件起动的,动态生成输入输出表)。  针对文件的逆向工程或替换破解,可以采用文件完整性的保护策略  文件自校验或文件之间相互校验  利用Hash算法或签名算法  进一步增强性  支持普通Windows PE文件的加密  支持JAVA和Dot Net程序的加密  支持API-Shell模式  提高本地授权的安全性,构成双因素验证  使本地授权便于跟踪和管理  通过跟踪记录进行破解补救和法律手段  利用没有被移除的跟踪代码提出警告或禁用软件  更新软件,发升级包补救  根据验证记录使用法律手段  特征项函数的调用、判断、提示写在一起  重要的字符串或常量在程序中以明文出现  始终调用同一个特征项函数并且做同样的判断  程序缺乏随机性,每次执行的路径都一样  没有文件完整性检验或文件之间没有相互认证  没有设置云验证属性
显示全部
相似文档