防拷贝防盗版之函数地址重定向

最近做软件程序license控制想起了八年多以前给同事一个英国的华裔朋友做的windows下的软件破解,那个程序很容易破解,它通过读取硬盘序列号生成注册字符串,前期我是挂接特定的win32 API,修改返回的硬盘序列号,后期觉得很不自然,通过修改程序入口地址注入了破解dll,不修改任何数据,而是在生成注册字符串的地方弹出一个msgbox,将其显示出来,为此我的到了约400英镑的酬劳。
现在来看这种注册码的license控制太弱太弱,很是容易破解。
我的程序要采用强壮的license控制技术,简要说明如下:
一:读取硬件特征信息作为密钥
(硬盘序列号或其它)
二:将程序中一些重要的函数体用密钥加密
形成license文件随软件发放给用户
三:软件启动后用硬件特征信息密钥解密
license文件,存在动态申请的虚拟内
存中,然后进行函数地址的重定向,
重定向函数也在license文件里,是要
解密后才能被CPU执行的。
四:解密和重定向工作完成后开始运行。

这种license控制技术在破解的难度上以几何级的程度增长,要求破解者必须精通C语言,
精通各种操作系统下的可执行文件结构和运行机理,精通汇编语言同时也要精通X86CPU
指令集等等还不一定能破解得了,最后眼花缭乱无所适从。
延伸到java程序的license控制,其实通过JNI技术:在动态链接库里完成license控制,将加密后的class文件解密后形成字节码保存在虚拟内存中,再通过自定义的classloader从内存字节码中装载class。过程中没有任何明文的临时文件生成,一切都在内存中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值