当前位置: 首页 > 图文教程 > 网络安全 > 黑客技术 > 软件狗[Dongles]的加密与解密技术(5)

黑客技术
黑客利用提供甲流疫苗接种骗术散播电脑病毒
中关村在线的服务器遭到黑客入侵
黑客常用4种攻击手段和应对措施
不用ARP欺骗进行嗅探和会话劫持进行MAC欺骗
重庆银行官网被黑客入侵挂马
网站被攻击的方式和防范黑客攻击的措施
黑客攻击:用DOS命令破解NT系统账号密码
Windows环境下木马程序如何隐藏系统中
最新的QQ空间密码和权限破解的方法
网上看科幻片阿凡达当心挂马站点和钓鱼网站
百度被黑引发中伊互联网红黑客大战
XSS攻击如何实现以及保护Web站点免受跨站点脚本攻击
互联网发展史上的几次影响较大的黑客事件
科技博客网站Techcrunch遭到黑客攻击
防止社交媒介遭受黑客攻击的10个方法
美国会议员网站被黑 贴上反奥巴马总统信息
游侠网Netshow论坛受到DDOS大流量攻击
火车票转让成网络热词 黑客借机挂马
网警摧毁国内最大黑客网 木马产业链规模达百亿
“谷姐”蹿红背后:拒百万广告 遭黑客攻击

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-29   浏览: 86 ::
收藏到网摘: n/a

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

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

    3、注意事项

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

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

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

    函数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:
    /*
    * 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);