软件保护技术 - 软件加密狗
Download
Report
Transcript 软件保护技术 - 软件加密狗
0
什么是软件保护
软件保护(Software Protection)
保障开发商软件发布及使用安全的方法和过程的总和。它包括软件加密
过程、许可证或者安全硬件的初始化及发布过程和加密软件运行过程等
部分。属于安全范畴中内容保护的一个分支。
1
软件保护的意义
为什么要给软件加密
盗版
什么是盗版
怎么盗版
盗版的危害
减少收入
降低信誉
增加负担
如何防止盗版
2
软件保护技术分类
使用序列号保护
使用许可证保护
使用安全硬件保护
3
硬件狗加密的基本原理
开发商程序通过调用硬件狗的接口模块对硬
件狗操作,硬件狗响应该操作并通过接口模
块将相应数据返回给开发商的应用程序。开
发商的应用程序可以对返回值进行判定并采
取相应的动作。简要示意如下:
4
硬件狗加密的基本方式
API 方式
各种语言接口
Shell 方式
外壳加密
同时支持加密重要代码、数字常量、字符串
5
应用程序的结构
应用程序
应用程序
OBJ
驱动程序
加密锁
6
动态库
DLL
驱动程序
加密锁
解密工作主要集中
在应用程序这层
或者应用程序与动
态库之间
迷宫技术、
反跟踪技术
加密传输等
保证驱动程
序无法模拟
数据交换随机
噪声技术、硬
件制造绑定工
艺等保证硬件
无法复制
破解软件的五大招数
判断软件是否加壳,使用相关工具脱壳。
对软件进行静态分析
对软件进行动态调试,查找加密点
对各个加密点进行破解
修改文件或制作补丁软件
7
优秀软件保护产品的特征
有效防止静态反编译(花指令,系统调用以及敏感信息的隐藏)
有效防止动态跟踪(采用关键代码隐藏的迷宫技术)
有效防止模块替换(动态交互认证技术)
有效防止模块被暴力破解(模块间交叉进行完整性校验)
有效侦测黑客软件
对可执行程序加壳(执行文件的代码段加密,对执行文件采用高强度的
压缩算法)
8
SafeNet特有的加密技术
许可证管理技术
拥有灵活的许可证管理和发放机制,软件开发商可以完全、灵活、有效、数字
化的控制用户使用软件的方式,包括使用时间、次数以及模块等。同时开发商
可以方便、快捷的进行许可证的远程升级。
硬件虚拟机
具有自主产权的硬件虚拟机,使得自定义算法可以在加密狗硬件内解释、执行
。
数据交换随机噪声技术
独有的随机噪声技术,有效地对抗逻辑分析仪的分析及各种调试工具的攻击。
9
SafeNet特有的加密技术
迷宫技术
在程序入口和出口之间包含大量判断跳转干扰,动态改变执行次序,提升抗跟踪
能力。
AS技术
内嵌式加密(API)与外壳加密(SHELL)相结合的方式,能够到达极高的加密强
度,即使外壳被破坏,被保护的程序仍然不能正常运行。
10
软件加密中的九个陷阱
陷阱一:访问判断提示
dwRet = CheckDog();// 访问狗
if(dwRet!=0)// 做判断
{
MessageBox(…);// 提示用户
ExitProcess(0);// 退出程序
}
else
{
正常运行
}
11
访问狗之后不要立即做判断,
判断狗不正确后,不要立即
提示,或者不提示。
软件加密中的九个陷阱
改写为:
dwRet = CheckDog();// 访问狗
// 加入其它代码
if(dwRet!=0)// 做判断
{
// 加入其它代码
MessageBox(…);// 提示用户
ExitProcess(0);// 退出程序
}
else
{
正常运行
}
12
软件加密中的九个陷阱
陷阱二:存放明文字符串
程序中要使用字符串“GrandDog”,
利用某一算法,
“GrandDog”“HsboeEph”
在程序运行过程中,
“HsboeEph” “GrandDog”
重要的字符串不要在程序中
以明文出现,应该使用算法
动态生成。
应用事例:保护数据库中的数据
在不影响程序效率的前提下,可以
动态生成再使用。
使用自己的算法,写入数据库之前,
关于算法,在网上有各种语言编写
把数据加密,使用数据时,把数据
的各种算法,有的可以稍加改动,
从数据库读出,解密后再使用。
使之成为自己的算法,这样可以有
效地提高加密强度。
13
软件加密中的九个陷阱
陷阱三:读字符串、数据比较
14
读狗获得字符串,数字比较
X
读狗获得字符串,数字运算
√
读狗获得字符串,数字加解密比较
√
软件加密中的九个陷阱
宏狗里提供了加解密函数可以使用
HRESULT RC_EncryptData();
HRESULT RC_DecryptData();
数据加解密。目前只对16字节的数据进行加解密。加解密算法采用标准
AES算法Rijndael.
15
软件加密中的九个陷阱
陷阱四:封装API
把访问狗的API函数封装为一个函数,里面用了很多技巧,在程序中多次调
用这个函数查狗,结果是,如果这一个函数被破解,不管程序中有多少调用
这个函数查狗的加密点,都不会起作用.
解决办法
在不影响程序效率的情况下,尽量多写一些查狗的函数,彼此要有区别,使
用不同的算法,多一些查狗出错的标志,让这些标志参与运算,在不同的模
块中,使用不同的查狗函数。
16
软件加密中的九个陷阱
陷阱五:试用版 正式版 统一
随着网络的发展,开发商可能在网络上提供试用版软件,如果有狗,试用
版软件就成了正式版,在这种情况下,就给了破解者可乘之机,他们可以
下载试用版软件,进行破解,如果成功,就得到了正式版软件。
解决办法
试用版与正式版要分开,试用版不提供的功能,代码已经删掉,使得不可
能利用试用版破解得到正式版。
17
软件加密中的九个陷阱
陷阱六:使用明显的接口名称
开发商的软件可能有多个模块,查狗的模块或接口不要用显
而易见的名字来命名,这样会令解密者更容易找到加密点,
当然也可以利用一些名字来迷惑解密者,尤其是dll,引出函
数时甚至可以不用函数名。
18
软件加密中的九个陷阱
陷阱七:固定加密点
给查狗函数加入一定的随机性,例如,随机地执行某一API
函数,或者在狗的存储区中划定一小块区域作随机读写,读
写地址、读写内容、读写长度都是随机取的,这样可以很好
地防止那些模拟工具。
19
软件加密中的九个陷阱
DogAddr = 80 + Random(20);
DogBytes = 20 – Random ( 100 – DogAddr );
DogData[1] = DogAddr;
DogData[2] = DogBytes;
RetCode = WriteDog();
if ( Random ( 10 ) = = 5 )
{
RetCode = DogCheck ( );
... …
}
if ( Random ( 10 ) = = 7 )
{
RetCode = ReadDog ( );
... …
}
20
软件加密中的九个陷阱
陷阱八:
在大多数情况下,破解是通过更改exe 或 dll 文件实现的,要在
程序中检查exe 或 dll 文件的完整性,即利用某种算法计算出整
个文件的校验和,在程序中比较,如果文件被更改,校验和就
会变化,这类算法网上有很多,可以查得到。另外,exe和dll之
间要相互认证,一方面防止dll被替换,另一方面防止非法exe访
问dll。
21
软件加密中的九个陷阱
陷阱九:不加外壳
建议开发商把API和Shell技术同时使用, 即调用API函数
与外壳加密相结合的方式,这样能够达到很高的加密强度
22
新一代的高强度加密产品 宏狗
宏狗是一款真正为软件保护设计的产品。
宏狗采用了第二代安全加密引擎,对抗静态编译和动态跟踪的能力更强了
宏狗的整体易用性很好
支持丰富的加密模块
自主版权的狗内操作系统(文件系统、硬件虚拟机)
23
新一代的高强度加密产品 宏狗
支持高强度外壳加密
支持类C的自定义算法
支持许可证文件类型
支持2级密码(限制口令校验次数)
模板功能方便了开发商初始化硬件狗
24
新一代的高强度加密产品 宏狗
具有完善的远程升级解决方案
硬件支持标准的加密解密以及签名的算法
可以对抗调试跟踪软件
可以绑定特定的主机
支持不同的存储容量
25
应该尽量避免的问题
加密点只在程序启动的时候检测一次,运行中不再做检查
访问狗、做判断、提示用户写在一起
重要的字符串在程序中以明文出现
在狗中存放字符串,程序中读出比较
调用同一函数或判断同一个全局标志查狗
26
应该尽量避免的问题
查狗的模块或接口名字太明显
程序无随机性,每次运行执行路径都一样
没有检查exe或dll文件的完整性,exe和dll之间也没有相互认证
试用版软件同正式版软件是同一份
只调用了API函数,没有用外壳加密工具
27
简单而有效的加密技巧
适当增加加密点
判断和提示分开
带有迷惑性的代码,尽量隐藏加密点
重要的字符串不要在程序中以明文出现,应该使用算法动态生成。
28
简单而有效的加密技巧
被保护软件可能有多个模块,检查硬件狗的模块或接口不要用显而易见
的名字来命名,这样会令解密者更容易找到加密点,当然也可以利用一些
名字来迷惑解密者,尤其是DLL,引出函数时甚至可以不用函数名。
校验关键模块的完整性
让程序随机执行
API 和 Shell 技术同时使用
29
现场答疑时间
加密永远比解密容易!
为了我们的利益,请做好软件保护!
30
Thanks!
联系方式
西安金时创科贸有限公司(Safenet西北总代理)
联系人:刘毅 QQ:59397770
移动电话:13468700453
联系电话:029-82249456 82249447 82255510
E-mail:[email protected]
地址:西安南二环东段62号伟业都市远景7D
31