2、使用BITSHELL须知
请不要使用PKLITE,LZEXE或EXEPACK进行压缩商品程序。建议高级语言程序设计者,如有可能将所用程序设计语言的启动代码作修改,改变程序的入口点,避免被截获。在程序内部识别BITSHELL的嵌入式模块最好采用随机调用。
加密时用环境变量指定参数。生产一批软件,用同一种变形算法,万一软件有漏洞,新版本的软件可换一种变形算法。加密后的文件放在硬盘上,可提高加密速度。超大文件加密后,再用PKZIP等压缩后,放入商品软件盘上。
3、注意事项
(1)运行BITSHELL系统,或运行经BITSHELL加密的程序系统,如果安装了驻留型的调试跟踪器(如:Soft-ICE,GameBuster等),请先拆除之,否则程序将拒绝运行,因为这样有跟踪解密的嫌疑。 (2)使用BITSHELL加密商品软件的开发者,不要将BITSHELL系统盘上的任何文件和信息,以任何方式提供给最终用户。不要将自己所用的BITSHELL的版本,序列号和变形算法透漏出去。
五、系统提供的可链接函数
函数BL-ComeIn(BLOBJ.OBJ).........................[1]
C语言说明:
extern unsigned long BL_ComeIn(void);
说明:
利用这个函数可判断是否运行过反跟踪程序,同时还返回程序的PSP段地址和机器的ROM检查和,供用户程序进一步检查。这是一个与加密外壳相关的函数,这样可使用户程序与加密软件融为一体。对PSP段地址和ROM检查和的判断不要隔的太近。
入口参数:无
出口参数:
如果出错,返回 0FFFFFFFFH ; (DX:AX=0FFFFFFFFH) 如果成功,返回一个无符号的长字。
其中: 低字节是ROM检查和,高字是PSP段地址。 (AL=ROM检查和,DX=PSP段地址)
注意:
ROM检查和计算方法: 累加ROM(0xF000:0xE000)处开始字节,长度为0x100。 获取PSP段地址方法: MOV AH,62H INT 21H BX就是该程序的PSP段地址。
调用建议:
不要每次运行都去检查该函数,用适当频率、在关键的地方调用这个函数。
C Usage Example:
/* * function:BL_ComeIn */ extern unsigend long far BL_ComeIn(void);
/* Error return 0xFFFFFFFF,Success Return * Lo Byte is checksum,Hi Word is PSP segment */
void My_BL_ComeIn() { unsigned long ComeIn; unsigned short int ROM_CheckSum; unsigned int PSPsegment; ComeIn=BL_ComeIn(); if (ComeIn==0xffffffff) { printf("\nERROR:not loaded from BITSHELL shell ! \n"); } else { ROM_CheckSum=ComeIn&0xff; PSPsegment =ComeIn>>16; printf("nBITSHELL On Entry:\N"); printf("ROM checksum is %x\nh",ROM_CheckSum); printf("PSP segment is %xh\n",PSPsegment); inregs.h.ah=0x62; intdos(&inregs,$outregs); printf("n This program PSP segment is %xh\n",outregs.x.bx); } }
共13页: 上一页 [1] [2] [3] [4] [5] [6] 7 [8] [9] [10] [11] [12] [13] 下一页
|