您的位置: 我要加密首页 >> 加密技术 >> 阅读文档:外壳反跟踪反破译程序BITSHELL简介

外壳反跟踪反破译程序BITSHELL简介

[ 作者: | 更新日期:2007-6-21 15:02:42 | 阅读次数: | 评论 0 条 | 我要投稿 ]

一、系统简介

BITSHELL是一套可反跟踪反破译的软件加密系统,主要用语保护软件开发者的合法权益,防止未经授权的复制、算法解读及目标码反汇编。它是我们应高级开发者的要求从BITLOK中提炼出来的,专为应用软件提供pj保护的系统。应用软件开发者可以充分发挥自己的才智编写或精巧或复杂的程序,有BITSHELL的保护不用担心竞争者对商品软件进行逆向分析。应用软件开发者更可以设计自己的反拷贝介质(加密卡、加密狗等),然后用BITSHELL进行外层保护,从而不必担心访问反拷贝介质的代码被截获。应用软件开发者也可以购买商品化的加密卡,加密狗等,在应用系统内部秘密地存取加密卡、加密狗,用BITSHELL作外层保护,防止访问反拷贝介质的代码被截获。

字串8

主要功能和性能如下: 字串8

千变万化的加密方案
内含随机可选的二十套加密算法,构造出千变万化的反跟踪反破译方案,特别适合加密有多个单独执行程序的软件。

字串7

先进超强的反跟踪技术
采用加密虚拟机、多层间址多  链解等独创的世界领先技术,结合传统的加密方法,具备超强的动态反跟踪能力。防范各种软硬件调试器对其破译。不仅防止了国际上通用的调试器,如:Soft-ICE,Turbo Debugger,Symdeb等,还重点防范了国内开发的各种专用调试器。 字串9

可靠性高、兼容性好、使用面最广泛
经BITSHELL1.0加密过的软件日夜运行在超过60万台机器上,经过了最广泛、最严格的测试。BITSHELL2.0具备同样可靠的性能,加密过的软件可以在各种厂牌各种机型上正常运行,兼容各种流行的DOS系统。

字串9

功能全面、使用方便
可加密各种带覆盖模块的执行文件,特别适合加密有Clipper,FoxPro等编译的各种数据库应用系统。

字串6

提供OBJ嵌入式加密模块。这样,用户还可以在源程序里加入加密模块,与外壳部分相互关联,有效地提高破译难度。

字串8

可以为用户定制专用BITSHELL反跟踪反破译系统,可以满足用户的独特需求。 字串6

  字串5

二、快速入门

字串8

BITSHELL经过了用户严格的检验,作者对其精雕细琢反复修正,现在的版本使用极容易。确保BITSHELL硬盘或网络安装已经成功,或BITSHELL源盘在软驱中,加密方法如下: 字串7

BITSHELL<源文件><目标文件> 字串7

例如:
把TEST.EXE加密成TESTOK.EXE。输入以下命令: 字串5

BITSHELL TEST.EXE TESTOK.EXE 字串9

把TEXE.EXE加密不保留未加密的程序。输入以下命令。 字串7

三、操作指南 字串4

1、BITSHELL参数的详细说明 字串7

BITSHELL可以用KEY环境变量来设定一些参数,这样可以简化使用过程。设置方法如下: 字串1

SET KEY=[SCHEMExx,][STAY,][CHECKOVL] 字串6

BITSHELL各项参数的意义如下: 字串6

(1)参数SCHEMExx,若给出则依用户的要求使用指定的变形算法,否则将随机抽取一种加密算法。BITSHELL2.0共有20种算法可选。

字串6

  每一种算法都有自己的特点,有的加密难度大但解码时间长,这种算法适合加密重要的代码不是特别大的软件,如算法三和十二;还有的加密难度适中但解码速度快,如算法一,适合加密大型软件。 字串4

  每个用户可以根据自己的特点选择,如加密不同的版本用不同的算法,加密不同的程序用不同的算法。如选算法十五可给出SCHEME15,选算法十九可给出SCHMEM19等,依次类推。 字串1

  (2)参数STAY用来选择在加密程序执行完毕后,是否驻留监控程序。默认值为不驻留监控。

字串9

   如果加密FoxPro编译的程序,必须加参数SET KEY=STAY,以监控覆盖模块。 字串5

  (3)参数CHECKVOL如果被加密的程序中有覆盖模块,此参数是用来选择是否检查覆盖模块。对于用CLIPPER编译出来的软件,加密时设置该参数非常有必要。默认值不检查覆盖模块。

字串4

   BITSHELL参数都是可选的,如果不设置,都有相应的默认值。默认的设置为:

字串3

  (1)SCHEME为随机挑选算法
  (2)不驻留检测程序(加密FoxPro编译的软件,设定为驻留检测)
  (3)不检查覆盖模块 字串9

   2、使用BITSHELL

字串7

   BITSHELL的商品盘是加密的,用户可以将其安装在NOVELL网络服务器上使用,源盘不能复制。如果只是临时使用一次也可不用安装,将BITSHELL源盘放入软驱中直接使用。方法: 字串6

   BITSHELL<源程序>[<目标程序>] 字串6

   如果不设置目标程序,加密的结果直接覆盖在源程序上。加密所用算法可用环境变量KEY来设置。

字串8

   例如:①BITSHELL C:TEST.EXE
         ②BITSHELL TEST.EXE SAMPLE.EXE
         ③A:BITSHELL D:TEST.EXE C:TEST.EXE 字串9

   其中<源程序>是需要加密的程序路径名。源文件必须是可执行文件以COM或EXE为后缀。如果缺省<目标程序>则直接在<源程序>上加密。如果还想保留未加密的程序,就不要缺省<目标程序>,并且保证源程序名与目标程序名不同。 字串6

   [说明]
  (1)BITSHELL系统本身是加密的,不能复制。
  (2)经BITSHELL加密的软件,可以拷贝,散发,任意运行,除非被加密的程序有自己的反拷贝介质。
  (3)经BITSHELL加密的软件不能还原为未加密状态。
  (4)经BITSHELL加密的软件无法跟踪,无法反汇编。

字串6

   四、BITSHELL高级技巧

字串4

   1、源程序嵌入式保护措施

字串4

   软件开发者在其软件开发完成以后,再在关键地方链入以下函数。当链接成功后,用BITSHELL.EXE将用户软件加密。这套被加密的软件运行时,就可以检测该程序是否被解密修改,以采取响应的反击措施,如拒绝执行等等。

字串4

   用户可参考以下流程加密:

字串6

  (1)将自己的软件(SAMPLE.C)编好,调试通过。 字串7

   SAMPLE.C
   #include<stdio.h>
   main()
   {
   printf("This is my sample program! \n");
   } 字串2

  (2)在SAMPLE.C重要的地方调用加密函数。

字串3

  SAMPLE.C
  #include<stdio.h>
   main()
   {
   /* Insert BITSHELL function call */
   id (BL_ComeIn()==0)
   {
   printf("Error! \n")
   return(255);
   }
   printf("Thin is my sample program! \n");} 字串5

  (3)编译SAMPLE.C成为SAMPLE.OBJ后,再将SAMPLE.OBJ和BLOBJ.OBJ链接成SAMPLE.EXE。
   QCL /AL SAMPLE.C BLOBJ.OBJ 字串1

   (4)用BITSHELL加密,键入命令执行:
   BITSHELL SAMPLE.EXE SALE.EXE
   软件加密过程完成了!
   如果被加密的程序SALE.EXE被解密或修改,就会提示错误,然后退出。

字串4

   2、使用BITSHELL须知
   请不要使用PKLITE,LZEXE或EXEPACK进行压缩商品程序。
   建议高级语言程序设计者,如有可能将所用程序设计语言的启动代码作修改,改变程序的入口点,避免被截获。在程序内部识别BITSHELL的嵌入式模块最好采用随机调用。 字串3

   加密时用环境变量指定参数。生产一批软件,用同一种变形算法,万一软件有漏洞,新版本的软件可换一种变形算法。加密后的文件放在硬盘上,可提高加密速度。超大文件加密后,再用PKZIP等压缩后,放入商品软件盘上。

字串9

   3、注意事项 字串8

  (1)运行BITSHELL系统,或运行经BITSHELL加密的程序系统,如果安装了驻留型的调试跟踪器(如:Soft-ICE,GameBuster等),请先拆除之,否则程序将拒绝运行,因为这样有跟踪解密的嫌疑。 字串2

  (2)使用BITSHELL加密商品软件的开发者,不要将BITSHELL系统盘上的任何文件和信息,以任何方式提供给最终用户。不要将自己所用的BITSHELL的版本,序列号和变形算法透漏出去。 字串1

   五、系统提供的可链接函数

字串5

   函数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段地址)

字串1


   注意:ROM检查和计算方法:
         累加ROM(0xF000:0xE000)处开始字节,长度为0x100。
         获取PSP段地址方法:
         MOV AH,62H
         INT 21H
         BX就是该程序的PSP段地址。
   调用建议:
       不要每次运行都去检查该函数,用适当频率、在关键的地方调用这个函数。

字串3

   C Usage Example:
   /*
   * function:BL_ComeIn
   */ 字串1

   extern unsigend long far BL_ComeIn(void);
   /* Error return 0xFFFFFFFF,Success Return
   * Lo Byte is checksum,Hi Word is PSP segment
   */ 字串7

   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);

字串4

   inregs.h.ah=0x62;
   intdos(&inregs,$outregs);
   printf("n This program PSP segment is %xh\n",outregs.x.bx);
   {
{ 字串2


   六、一个简单的例子 字串9

   这里我们一起看一下经BITSHELL加密后的程序的情况。
   采用一个极简单的例子,用DEBUG生成一个 TEST.COM文件:

字串9

   C:\>DEBUG
   -A
   876B:0100 MOV AL,0
   876B:1012 MOV DX,260
   876B:0105 OUT DX,AL
   876B:0106 INT 20
   8760:0108
   -RCX
   CX 0000
   :8
   -N TEST.COM
   -W
   Writing 00008 bytes
   -Q 字串9

   用BITSHELL对TEST.COM进行加密:

字串5

   C:\>BITSHELL TEST.COM
   BITSHELL(tm)Version 2.01
   Copyrighe(c) 1989-1995 by Yellow Rose SoftWare Workgroup 字串5

   Scheme 6 (CodeKey shift repeated) 字串9

   9K
   Total encryption size is 9K

字串9

   Encryption completed successfully.

字串9

   再用DEBUG来看一下加密后的TEST.COM:

字串7

   C:\DEBUT TEST.COM
   -R
   AX=0000 BX=0000 CX=4CBC DX=0000 SP=00C0 BP=0000 SI=0000 DI=0000
   DS=877C ES=877C SS=878C CS=878C IP=021C NV UP EI PL NZ NA PO NC
   878C:021C FA       CLI
   -U
   878C:021C FA       CLI
   878C:021D 8CCC     MOV SP,CS
   878C:021F 8ED4     MOV SS,SP
   878C:0221 BC4D25   MOV SP,254D
   878C:0224 9C       PUSHF
   878C:0225 51       PUSH    CX
   878C:0226 52       PUSH    DX 字串5


   878C:0227 56       PUSH    SI
   878C:0228 57       PUSH    DI
   878C:0229 55       PUSH    BP
   878C:022A 0E       PUSH    CS
   878C:022B 1F       POP DS
   878C:022C 2E       CS:
   878C:022D 8C061000 MOV[0010],ES
   878C:0231 2E       CS:
878C:0232 C606480080 MOV BYTE PTR [0048],80
   878C:0237 0E       PUSH       CS
   878C:0238 07       POP ES
   878C:0239 BEAD24   MOV SI,24AD
   -U 字串6


   ......    ......

字串8


   -Q 字串1

   可以看到经加密后TEST.COM文件变长了很多,这是因为在程序外面加了一层外壳。同时,您也发现了加密后的程序没法反编译;如果您再跟踪一下,您又会发现加密后的程序已经无法跟踪了。如果您手头有Turbo Debugger或Soft-ICE等等,它们也是无效的。

字串5

   看起来,这是一个比较好的加密工具,尤其是它提供的函数可以嵌入源代码中,跟软件狗配合起来,达到内外结合的加密效果,大家不妨一试。

字串2


Tags:简介 程序 跟踪 加密 BITSHELL 软件 可以 使用
来源:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为