比特平台常用软件保护技巧.pdf
文本预览下载声明
比特平台常用软件保护技巧
北京比特安索信息技术有限公司
无论何种软件保护方式,其核心原理都是将易于复制的软件代码与不
易复制的软、硬件内容进行绑定。
可用于绑定的软、硬件内容可以是:
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模式
提高本地授权的安全性,构成双因素验证
使本地授权便于跟踪和管理
通过跟踪记录进行破解补救和法律手段
利用没有被移除的跟踪代码提出警告或禁用软件
更新软件,发升级包补救
根据验证记录使用法律手段
特征项函数的调用、判断、提示写在一起
重要的字符串或常量在程序中以明文出现
始终调用同一个特征项函数并且做同样的判断
程序缺乏随机性,每次执行的路径都一样
没有文件完整性检验或文件之间没有相互认证
没有设置云验证属性
显示全部