用户登录  |  傲看软件园 用户注册
文章中心广告代码ASP源码PHP源码JSP源码.NET源码源码相关傲看留言板繁體中文
当前位置:傲看软件园文章中心电脑安全安防业界

软件狗[Dongles]的加密与解密技术(5)

减小字体 增大字体 作者:郁郁小蝎  来源:中国站长学院  发布时间:2008-10-20 20:20:51

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


    五、一个简单的例子

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

    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

    用BITSHELL对TEST.COM进行加密:

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

    Scheme 6 (CodeKey shift repeated)

    9K
    Total encryption size is 9K

    Encryption completed successfully.

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

    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


    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


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


    -Q

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

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


Tags:

作者:郁郁小蝎

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

精品栏目导航

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图
冀ICP备08004437号 | 客服Q:354766721 | 交流群83228313
傲看软件园 - 绿色软件,破解软件下载站! 源码网 源码之家 绿软之家
Copyright © 2003-2010 OkHan.Net. All Rights Reserved .
页面执行时间:11,859.38000 毫秒
Powered by:OkHan CMS Version 4.0.0 SP2