主权项 |
一种软件保护方法,其特征在于,包括以下步骤:(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)。 |