BITLOK加密软件手册 系统简介 BITLOK 加密软件可以防止未经授权的复制、算法解读及目标码反 汇编,经过 BITLOK 加密后的软件可以安装到硬盘和 Novell网络服务 器上。BITLOK 经过长达七年的开发,技术稳定可靠,有着广大的用户 基础,经BITLOK加密的软件在超过百万台 PC上日夜稳定运行;BITLOK 支持DOS, Windows 3.x, Windows 95 等操作平台,并可为软件厂家开 发专用版,方便厂家的批量生产。 主要功能和性能如下: ○ 用户自动升级加密软件 允许用户开发一段代码,插入到 BITLOK 内核中去,自动升级 加密软件。用户参与加密软件的开发,可以把加密软件和应用 软件有机地结合在一起。同时,黄玫瑰组还会通过 BBS 站发 布一些新的插入模块,供用户升级。 ○ 最新的密钥技术 使用最新的密钥技术,不生成坏道坏块、密钥非常可靠,同时 还可以选用电子注册的方式(厂家专用版)。用户可以对一个 程序加密多次,同时还能够正确安装到硬盘或网络上。 ○ 先进超强的反跟踪技术 使用最先进的程序自动生成的方法,全部反跟踪代码由机器自动 生成,可靠性高,破解难度大。对于每一段独立的程序,全部由 机器自动打乱,很难动态或静态跟踪。目前仔细分析市面上的十 多种通用脱壳工具的共同点,制定了一套专门的防范措施,同时 还针对某些常用的工具做了特殊处理。防范了各种调试器,重点 考虑了 SoftICE 和 WinICE 等。 ○ 可靠性高、兼容性好、使用面最广泛 经 BITLOK 加密过的软件日夜运行在超过百万台机器上,经过了 最广泛、最严格的测试,加密过的软件可以在各种厂牌各种机型 上正确运行,兼容各种流行的操作系统。 ○ 加密数据库应用程序 可加密 Clipper, FoxPro 等编译的各种应用软件,并能有效防止 UNFOX 等工具解码。 ○ 功能全面,使用方便 可以设定软件使用的时间限制,方便用户制作演示版软件;提供 OBJ 嵌入式加密模块。这样,用户还可以在源程序里加入加密模 块,与外壳相互关联,有效地提高破译难度。提供具备错误返回 码的通用硬盘和网络安装程序,便于用户开发与自己系统配套的 安装程序。加密母盘可以使用任意多次,加密过的软件支持硬盘 安装和网络安装,安装次数可设定。 ○ 提供各个平台上的加密软件 如:DOS,Windows 3.x,Windows 95, 还有加密 EXP 文件的版本。 ○ 软件厂家专用版 专用版有批量生产的功能。软件开发者只需要制作出第一张加密盘 后,再生产第二套软件除去拷盘时间仅需几秒钟。提供专门的经过 几百次变形的加密软件 OBJ 版本,使通用脱壳程序从理论上无壳 可脱。加密同一套软件可以制作相同的密钥盘,方便升级。 ○ BITLOK3 中内含 BITSHELL3 功能强大,可以选择只加一层外跟踪外壳。 文件清单 标准版 INSTALL.EXE BITLOK 安装程序 BL.EXE BITLOK 加密执行主程序 BLINST.EXE 硬盘和网络密钥安装程序 BLREG.EXE 注册码计算程序 MANUAL.EXE 详细使用说明 MANUAL.TXT 文本文件 BLOBJ.OBJ 用户嵌入模块 BLOBJ.ASM 用户嵌入模块源程序 TESTOBJ.PAS 嵌入模块的测试程序 TESTOBJ.EXE 编译好的测试程序 BLPLUG.COM 插入模块的示范程序 BLPLUG.ASM 插入模块示范程序源程序 README.EXE BITLOK 最新的改进说明 README 文本文件 安装指南 执行 INSTALL 后选择安装即可。如果安装失败,请与经销商 联系,可能是软盘损坏。 快速入门 1. 加密文件 如果要把 TEST.EXE 加密到 A 盘中,可以键入如下命令: BL TEST.EXE A: 如果要把 TEST.EXE 加密到 B 盘中,可以键入如下命令: BL TEST.EXE B: 如果加密后的程序还放在硬盘上,使用 B 驱动器中的磁盘作为 密钥盘,可以键入如下命令: BL TEST.EXE T.EXE /B 如果需要加密的文件比较大,就必须使用这种方法。先把这个 程序加密到硬盘上,在压缩后拷贝到软盘中。 2. 安装加密后的程序 安装方法比较简单,直接把加密后的文件复制到指定的硬盘或网络 服务器上,再把密钥盘插入软驱,执行 BLINST 即可。BLINST 会搜索密钥 驱动器。 把加密后的程序安装到硬盘上的操作过程如下: COPY B:TEST.EXE C: BLINST C:TEST.EXE 如果需要安装到网络服务器上,只需要把文件复制到服务器上,再 使用 BLINST 安装。 此安装过程必须把用户程序拷贝到硬盘中,安装程序不会自动拷贝 被加密的程序到硬盘中。 3. 序列号安装 (新增加的功能) BITLOK 3 的软盘密钥非常稳定,但在某些兼容性不好的机器仍然读不 出来。如果遇到加密后的软件无法安装的时候,可以使用序列号安装的功能。 首先,使用 BLINST 先读出用户号。方法如下: BLINST TEST.EXE /G 这里 TEST.EXE 是用 BITLOK 加密过的程序。这时屏幕上会显示用户 号,有八个字母,比如说显示的用户号为1234abcd。然后使用 BLREG 这个 工具计算注册码。 BLREG 1234abcd 如果 BLREG 计算出来的注册码为 5678ef90,再用 BLINST 把 TEST.EXE 安装进去,命令如下: BLINST TEST.EXE /S5678ef90 即在 /S 后面加注册码就可以不读软盘密钥把软件安装到硬盘中,这个 注册号只能在这台机器上使用。 如果希望加密后的软件不能使用注册码注册,请在 BITLOK 加密之前 输入如下命令: SET KEY=-REG 注意 不要把 BLREG 放在加密后的产品盘中,也不要把 BITLOK 给其他人。 操作指南 1. BITLOK 使用简介 本系统可以使用 5.25"(1.2MB) 和 3.5"(1.44MB) 的磁盘作为密钥盘, 网络安装支持 Novell Netware。 直接键入 BL 命令,会显示如下信息: BITLOK(tm) Version 3.0 Copyright (c) 1989-1996 by Yellow Rose Software Workgroup The software serial number is xxxxx Usage: BL Source Target [/A|/B] [/N] [/S] [/Dxxx] [/Ixxx] [/Pplug] /B Floppy drive B on which the key exists /E Encrypt BITLOK version message /S Encrypt and *NOT* read disk key /Dxxx Date limit (1..999, default is 30 days) /Ixxx Installation limit (1..999, default is 10 times) /Pplug Plug new user code in kernel Sample: bl t.exe a:t.exe /a *** BITLOK was created by Lei Jun and Wang Quanguo in 8/17/1989 *** 参数说明 Source 指定被加密的程序名 Target 指定加密后的程序名 如果想把程序加密到 B 盘,Target 可以直接写成 B: /A|/B 指定密钥盘所在的驱动器号(默认的驱动器号为 A ) /E 不在加密后的程序里放入 BITLOK 的版权信息。 /N 必须生成新的指纹 如果使用同一张密钥盘加密多个文件,不能加这个参数。 设置这个参数是用来重写不稳定的密钥。 /S 加密但不读密钥盘 如果用户主要是想防止非法解读或修改,就必须使用这个 参数。用户使用其他的加密软件后,也可以加这个参数再 加一层保护。 /Dxxx 设置时间限制(1..999, 默认是30天) 用这个参数生成演示版本。 /Ixxx 设置安装次数(1..999, 默认是10次) /Pplug 插入用户模块到 BITLOK 的内核中去。 具体请见"高级技巧"中的说明。 直接键入 BLINST 命令,会显示如下信息: BITLOK Installation Version 3.0 Copyright (c) 1989-1996 by Yellow Rose Software Workgroup. The software serial number is xxxxx Usage: BLINST Source1 [Source2]... [/Q] [/T] [/N] [/G|/Sxxx] /Q Installation without prompt (quiet mode) /T Only display installation times left *** Created by Lei Jun and Wang Quanguo in 8/17/1989 *** 参数说明: Source1 安装程序可以一次安装多个程序 /Q 不显示任何提示信息,方便用户开发自己的安装程序 /T 如果有安装次数限制,显示剩下的安装次数 2. 具体加密过程 假定我们开发一个应用程序 MAIN.EXE,想生成一套加密后的软件。 再假定密钥盘插在 B 盘中,原文件放在 C 盘。 过程如下: \BITLOK3\BL MAIN.EXE B: <-- 加密 COPY \BITLOK3\BLINST.EXE B: <-- 生成安装程序 COPY INSTALL.BAT B: --- INSTALL.BAT 内容 --- MD C:\TMP COPY MAIN.EXE C:\TMP BLINST C:\TMP\MAIN.EXE /Q IF ERRORLEVEL 1 GOTO ERR ECHO. Ok! GOTO END :ERR ECHO. Err! :END 高级技巧 一、用户安装程序的编写 开发者能够在自己的安装程序中调用 BITLOK 的通用安装程序 将密钥安装到硬盘或网络服务器上。 先将参数 /Q 加到 BLINST 命令行尾部,BLINST 将不出现任何提示; 对于安装的结果,可以通过错误返回码来确定。如果为0,表示正确 返回,否则安装失败。失败的原因有这样几点: 没有用 BITLOK3 加密 读密钥盘失败 安装次数已经用尽 二、OBJ 嵌入技术 软件开发者在其软件开发完成以后, 再在关键地方链入以下函 数。当链接成功后,再用BITLOK 将用户软件加密。注意这套软件如 果不加密可能无法正确使用。 用户可以参考以下流程加密: (1) 将自己的软件 (SAMPLE.C) 编好,调试通过。 ---- SAMPLE.C ---------------------------- #include main() { printf("This is my sample program! \n"); } (2) 在 SAMPLE.C 重要的地方调用加密函数。 ----- 改动过的 SAMPLE.C ------------------- #include main() { /* Insert BITLOK function call */ if (BL_ComeIn() == -1) { printf("Error! \n"); return(255); } printf("This is my sample program! \n"); } (3) 编译 SAMPLE.C成为 SAMPLE.OBJ后,再将 SAMPLE.OBJ和 BLOBJ.OBJ 链接成 SAMPLE.EXE。 QCL /AL SAMPLE.C BLOBJ.OBJ (4) 插入一张软盘在B驱动器,键入命令执行: BL SAMPLE.EXE B: 软件加密过程完成了! 执行加密后的软件是这样的: (1) 将软件拷入硬盘(C:); (2) 将钥匙盘插入 B 驱动器,键入如下命令安装密钥: BLINST SAMPLE.EXE 加密后的软件就可执行了! 三、插入模块的开发 BITLOK 最早使用 OBJ 嵌入的技术来提高系统的安全性,但由于 BITLOK 本身是通用软件,这样的模块每个人都能买到,自然就能获 知 OBJ 的内容,所以在 3.0 中,我们允许用户自己开发插件,把自 己的程序插到 BITLOK 中去,再自己开发 OBJ,在自己的程序中检测 软件运行是否正常,这样的安全性相当高。尤其是软件高手,可以 在 BITLOK 已有的功能上,开发出质量更高的加密系统,有效地保护 自己的知识产权。 同时,BITLOK3 还可以利用这项功能进行动态升级。如果市面上 出现了一种新的解密软件,可以在最短的时间写出 BITLOK3 的插件, 并在报刊和 BBS 站上发布新的插件,就能自动升级。 开发插件需要遵循如下规则: 按 COM 文件格式编写汇编程序,但程序不能修改 SS, SP 等寄存 器,退出时不要接管中断,也不要修改非插件的部分。当然,写插件时 不要写一些易于跟踪或打断的代码。这样做不仅不能提高可靠性,反而 有害。 ------------- 源程序 ----------------------------------------- .model tiny .code org 100h ; COM 结构 Main: mov ah, 9 mov dx, offset Hello int 21h int 20h ; 用 INT 20H 终止程序运行 Hello db 'BITLOK3 Plug Sample',0dh,0ah,'$' ends end Main ------------- 编译方法 ---------------------------------------- TASM SAMPLE TLINK /T SAMPLE 按一般的应用软件开发方法进行调试。 ------------- 加密 -------------------------------------------- BL A.EXE B.EXE /Psample.com 注意: 如果插件程序有错误,会影响加密软件的运行! 四、参数设置 BITLOK 3 仍支持以前的 KEY 参数设置。方法是在运行 BITLOK 之前 先执行 SET KEY = ... 的命令。 KEY 参数内容已经修改。 SET KEY = [B:|/B] = /B [INSTxxx] = /Ixxx [NEW] = /N [CHECKOVL] [LOCKOVL] [-HD] [-NET] [-REG] [-STAY] [-FOX] [-DOSFUNC] [PASS] ----- 参数说明 ---------------------------------------------- B:|/B 等价于执行 BL 时加 /B 的参数 INSTxxx 等价于执行 BL 时加 /Ixxx 的参数 NEW 等价于执行 BL 时加 /N 的参数 CHECKOVL 检查覆盖模块的校验和 LOCKOVL 变形覆盖模块 (由于变形覆盖可能导致很多问题的 出现,用户使用这个参数加密后,请仔细测试。如 果存在问题,可以使用 CHECKOVL 这个参数) -HD 不允许安装到硬盘上,同时也不允许安装到网络上 -NET 不允许安装到网络上 +REG 允许电子注册 -STAY BITLOK 执行完毕后不驻留代码(包含 -DOSFUNC)。 当加密代码执行完毕后启动用户程序,BITLOK 在内 存中保留一个监视代码,防止解密者截获。 FOX FOXPRO 编译的程序(如果有这个参数,忽略 -STAY) -DOSFUNC 不接管 DOS 中断 PASS 如果加密后的软件在某些机器上不能用,可以加这个 参数试试。 这些参数在命令行上使用,但必须加 @ 前导符。如: BL TEST.EXE T.EXE /S @LOCKOVL,PASS ----- 如何使用 ---------------------------------------------- (1) 只能在软盘上执行 SET KEY=-HD,-NET (2) 如果兼容性有问题,可以选择这些参数进行设置 SET KEY=-DOSFUNC SET KEY=-STAY SET KEY=-PASS 使用 ECODE 这个工具取返回码,查看一下 BITLOK 的内部返回错误 (3) 需要加密 OVL 模块 SET KEY=LOCKOVL ----------------------------------------------------------- 注意 加密接管 INT 21H 的驻留程序,一定要 SET KEY = -STAY。 ----------------------------------------------------------- 使用须知   密钥盘应选用优质名牌新盘。密钥盘用户无法复制, 一旦损坏 将给用户带来不便。同时,加密软件把密钥匙放在软盘的特殊磁道上, 如果软盘质量不好,可能导致该软件无法使用。加密好的软件最好能 换一台计算机检测一下,如果有问题,再重做。某些软驱识别密钥盘 有困难时,请将密钥盘取出,然后再放进驱动器中,关好驱动器门, 问题就可能消除。   运行 BITLOK 系统,或运行 BITLOK 加密过的软件,如果安装了驻 留型的调试跟踪器,请先拆除。否则程序将拒绝运行,因为这样有跟踪 解密的嫌疑。   使用 BITLOK 加密软件的开发者,只能提供 BLINST 给最终用户,除 此之外不要将 BITLOK 系统盘上的任何文件和信息,以任何方式提供给 最终用户。开发者最好能将 BLINST 变形后链入自己的安装程序,在内存 中展开并自己重定位。   请不要使用 PKLITE,LZEXE 或 EXEPACK 等通用的压缩工具压缩商品 软件,这样给解密者留下了一个后门。 建议高级语言程序设计者,如有可能将所用程序设计语言的启动代码 作修改,改变程序的入口点,避免被跟踪。 在程序内部识别BITLOK 的嵌 入式模块最好采用随机调用。在开发者的安装程序中不用键盘时最好关闭 键盘中断 INT 9 和 INT 16 并自己处理严重错误 INT 24。 厂家专用版说明 定制版的批生产功能 采用通用的加密软件,如果制作一套商品软件需要十分钟,制作第二 套软件,所有的工序还必须走一次。如果第一次需要加密两个文件,第二 次还是需要加密两个文件。这样软件的生产比较复杂,生产率比较低。出 于保密和软件质量问题,软件的生产必须由软件开发者完成。这样大量占 用了软件开发者宝贵的时间,让软件开发者不停地复制磁盘和加密,实质 上是一种浪费。 BITLOK最新的技术是超群的批生产功能,可以把软件开发者解放出来。 软件开发者只需要制作出第一张加密盘后,再生产第二套软件除去拷盘时 间仅需几秒钟。这样生产软件非常轻松。 BITLOK的定制版包含一套系统DUPKEY,就是完成批生产的过程。BITLOK 把软件的开发和制作分开。开发者只需要用 BITLOK 加密好一套商品盘,交 给生产者即可。生产者可以用拷备机直接复制,生产后再用DUPKEY 过一遍, 就全部加密完毕。 BITLOK OBJ 版本 在专用版中提供了一套 BITLOK 的 OBJ 版本,这样用户直接把该 OBJ 链入应用程序,就完成了加密工作,而且不同担心有一天会出现 一个新的通用脱壳程序能解密。 该 OBJ 目前支持 BC/BP/TASM 等16位实模式和保护模式的程序。 附录 ECODE 工具使用说明 可以执行一个程序并显示它的返回码和错误信息。 用法: ECODE 程序 命令行参数 ECODE 用"命令行参数"加载执行"程序",并显示退出码,同时检索 ECODE.INI 里的错误信息,显示对应的错误信息。 ECODE.INI 格式是文本格式,错误信息按下面的格式安排,ECODE 就能正确显示 ECODE.INI 中的信息。下面是一个 ECODE.INI 文件的 说明。 ; ECODE error message <-- 解释 1.Command invalid <-- 前面是错误码,加".",再加错误信息。 用户可以修改 ECODE.INI 来显示自己程序的错误码和错误信息。 附录 系统提供的可链接函数 函数 BL_ComeIn ( BLOBJ.OBJ ) 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 -------------------------------- extern unsigned long far BL_ComeIn ( void ); 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 BITLOK shell !\n "); } else { ROM_CheckSum = ComeIn & 0xff; PSPsegment = ComeIn >> 16; printf("\nBITLOK On Entry: \n"); printf(" ROM checksum is %xh\n", ROM_CheckSum); printf(" PSP segment is %xh\n", PSPsegment); inregs.h.ah = 0x62; intdos(&inregs, &outregs); printf("\nThis program PSP segment is %xh\n",outregs.x.bx); } } 附录 使用问答 问:我们加密一些程序,会出现"Packed file is corrupt"或死机现象, 如何解决? 答:加密后的程序死机的原因是多方面的。如果出现 "Packed ..." 这样 的提示或死机可以先试试用 LOADFIX 命令来加载这个加密后的程序, 出现这样错误的主要原因是这个程序被 EXEPACK 或 AIN 等软件压缩, 而这些压缩软件有错误,Microsoft 在 DOS 提供 LOADFIX 这个命令 主要是用来解决这个问题。还有一种方法解决,请用 UNP 等类似工具 去掉压缩,再用 PKLITE 这样的工具压缩,最后加密。其他死机的解 决方案是试试 BL 的参数,如 SET KEY=-STAY 或 SET KEY=PASS 等 等。如果仍然无法解决,请与开发者联系。 问:按照用户手册中的说明进行安装,为什么有时出现死机情况? 答:我们已经做到使系统能够适应各种不同的 DOS 版本,但是只保证 MS-DOS, PC-DOS 以及 DR-DOS 中正常执行,其他DOS版本不能保 证。如果出现这种情况,建议的解决方案是使用标准的MS-DOS。 问:执行安装程序时,有时会出现找不到密钥盘的错误,怎么办? 答:一种情况的确是因为密钥盘不稳定,用户可以多试几次看看;另一 种情况则是一些内存驻留程序可能对加密程序的顺利执行产生影响, 请把那些通过 CONFIG.SYS、AUTOEXEC.BAT 驻留内存的程序全部取 消,重新启动机器,再试着执行 INSTALL 看看。如果通过以上方法 都未通过,请与销售部门联系。 问:防病毒卡或者防病毒程序在执行INSTALL过程中报出的是否允许修 改程序内容的提问,这是不是有病毒而造成的吗? 答:用户手中的安装盘绝对没有病毒。如果用户保证自己微机中没有病毒, 那么任何提示都不会是因为有病毒而造成。INSTALL需要修改某几个 执行文件中的参数,是否给以修改的提示出现后,应该回答Y。 问:安装正常结束后,系统为什么无法正常执行? 答:此时请检查你的微机中是否插了版本较低的防病毒卡,以及其他诸 如此类对硬盘操作会产生影响的非必要插卡? 如果有,请关机后把 卡拔除,重新开机,再次执行安装程序进行安装即可。安装成功后, 可把拔除的卡插回。 问:BITLOK 系统盘如果损坏怎么办? 答:请寄回销售部门。销售部门收到坏盘后,会立刻把新的安装盘寄上。 问:用 BLINST 安装BITLOK加密的程序,安装完成后提示“序列号不一 致”。这是什么原因造成的? 答:BITLOK和 BLINST 是配套使用的,BLINST 不能安装其他BITLOK加密的 软件。如果 BLINST 安装另外一套的BITLOK加密的软件就会出这样的 提示。 问:如何在批处理程序中调用 BLINST 安装一套使用BITLOK加密的程序? 答:在 BLINST 后加 /Q 参数不显示 BLINST 的安装信息,根据返回码做 下一步处理。 问:如果用户在运行加密好的软件时一运行就退出,如何解决? 答:用户应检查是否有跟踪、调试软件在内存中,并将其拆除。如有 SoftICE等在内存中。 附录 升级和售后服务   购买 BITLOK 的软件后,请把信誉卡寄回。如果不寄回,将不再提供 新的版本升级服务。 如果遇到一些自己无法解决的问题,请打电话给软件服务部,也可以 按以下格式仔细填写软件支持表。我们收到软件支持表后,将一一回复。 另外,如果您对 BITLOK 有什么好的建议,也可以通过写信的方式与我们 联系,我们对您表示深深的感谢! 同时我们希望您把 BITLOK 推荐给您 的同事和朋友,谢谢。 软件支持表 用户姓名 ................................................ 公司名称 ................................................ 联系地址 ................................................ 邮政编码 ................................................ 电话传真 ................................................ 系统配置 ................................................ 机器型号 ................................................ 操作系统 ................................................ CONFIG.SYS 文件内容(详细写出) AUTOEXEC.BAT 文件内容(详细写出) 所发生问题的详细描述 .................................... ──────────────────────────────   赠 人 玫 瑰 之 手 历 久 犹 有 余 香   ──────────────────────────────