发明名称 一种软件保护方法
摘要 本发明公开了一种软件保护方法。软件启动时,保留一份软件的原始拷贝;建立一个重定位信息表;启动两个随机数产生器;利用随机数产生器计算时间长度和位置数据;判断前述定时器是否到达预定时间,如果是,则根据位置变化数据扰乱代码的分布,把软件原始拷贝的不同区段复制到不同的位置,执行重定位操作。
申请公布号 CN102004885A 申请公布日期 2011.04.06
申请号 CN201010532216.4 申请日期 2010.10.30
申请人 华南理工大学 发明人 李拥军;潘炳镇;黄格仕;谢嵘
分类号 G06F21/22(2006.01)I 主分类号 G06F21/22(2006.01)I
代理机构 广州市华学知识产权代理有限公司 44245 代理人 李卫东
主权项 一种软件保护方法,其特征在于,包括以下步骤:(1)在WINDOWS下可执行软件启动的时候,保留一份软件的原始拷贝,用于软件运行过程中所受损害的恢复;(2)建立一个重定位信息表,该重定位信息表记录原软件重定位表的信息,并且根据区段的划分,记录不同区段之间的指令跳转信息;指令跳转信息数据项包括sSection、dSection、sbase和dbase;其中sSection是原区段编号,dSection是目标区段编号,sbase是程序的需重定位的目标地址区段的原地址,dbase是程序的需重定位的目标地址;将该指令跳转信息添加到重定位信息表中;使重定位信息表记录原软件重定位表的信息和代码扰乱之后的重定位信息;(3)启动随机数产生器A;利用随机数产生器A计算一个时间长度Tlen;启动随机数产生器B,利用随机数产生器B计算一组位置数据positionData,positionData是(1,2,3,…,n)的一个数据排列,n为位置数据中位置的个数,该组位置数据为程序指令扰乱之后存放的新位置信息;(4)启动一个定时器Timer,该定时器的定时长度是所述Tlen;定时器Timer实现在随机的一段时间Tlen内进行一次程序指令的扰乱;(5)当定时器Timer到达预定时间长度Tlen,定时器Timer触发一个定时事件;当定时事件发生,进入步骤(6);(6)根据步骤(3)产生的位置数据positionData,把软件原始拷贝的不同区段复制到所述positionData记录的位置;(7)根据步骤(2)得到的重定位信息表执行重定位操作,若编译器编译的转移地址是address,可执行文件头的基址是fbase,程序实际加载的基址是mbase,则重定位修正的最终地址值是address+mbase‑fbase+dbase‑sbase;定向本软件进程的指令指针寄存器;返回步骤(3)。
地址 510640 广东省广州市天河区五山路381号