中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 用C语言加密和DOS启动时LOGO 上一主题 | 下一主题
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『楼 主』:  用C语言加密和DOS启动时LOGO

请教各位大虾及各位斑竹:
  
  我刚用C/C++开发出一套医疗设备的监护控制系统,与NAIS的FP0通讯完成,现在马上要交货了,肯定要将程序内的逻辑锁及相关的防长期使用的功能取消,但我又担心客户无限制的拷贝,请各位大虾支招。目前我知道两个方案可以做
  
  1:读CPU或采集卡CPU的序列号,但我不知道这个序列号怎么用C语言读出,
  2:加硬件狗,但没有实际操作过,不知道价钱多少,性能怎么样,
  
  以上两种方案如果能采用第一种更好,否则只有加狗了。其实我也不想这么做。
  
  我本善良,那知世道艰难,现在我和我同事搞了快三个月,没有任何银两进帐。
  急!急!急!。。。
  
另外,我想启动时不显示DOS自检,直接运行我的LOGO,有什么方法实现,我的是DOS6.22

  广州 王 13006881860


2004-3-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

关于显示LOGO的问题,你的DOS版本过旧,请升级到MS-DOS 7.10,自带DOS启动LOGO支持。下面是MS-DOS 7.10完整安装版:

http://newdos.yginfo.net/dosart32.htm



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-3-17 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『第 3 楼』:  

谢谢Wengier斑竹

2004-3-19 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 4 楼』:  

楼主可以参考以下程序,将加密与硬盘的序列号联系上:
////////////////////////////////////////////////////////////////////////////////
//  程序名: HDSN.C                                  最后修改日期: 2002.08.08  //
//                                                                            //
//  程序主要功能:                                                             //
//               获得 IDE 硬盘 C 的序列号                                     //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include
#include
#include
#include
#include
char *getascii(unsigned int in_data[], int off_start, int off_end);
char *getascii(unsigned int in_data[], int off_start, int off_end)
{
    static char ret_val[255];
    int loop, loop1;
    for(loop = off_start, loop1 = 0; loop <= off_end; loop++)
        {
            ret_val[loop1++] = (char)(in_data[loop]/256);  // Get High byte
            ret_val[loop1++] = (char)(in_data[loop]%256);  // Get Low byte
        }
    ret_val[loop1] = '\0';             // Make sure is ends in a NULL character
    return(ret_val);                   // Return Serial Number of Physical Disk
}

void main(void)
{
    unsigned int dd[256];                     // DiskData
    unsigned int dd_off;                      // DiskData offset
    while(inp(0x1F7)!=0x50);                  // Wait for controller not busy
    outp(0x1F6,0xA0);                         // Get first/second drive
    outp(0x1F7,0xEC);                         // Get drive info data
    while(inp(0x1F7)!=0x58);                  // Wait for data ready
    for(dd_off = 0; dd_off != 256; dd_off++)  // Read "sector"
    dd[dd_off] = inpw(0x1F0);
    printf("The Serial Number of Physical Disk [C] is %s", getascii(dd,10,19));
    asm
    {
        mov     ah, 4ch;                      //  Return to DOS.
        int     21h;
    }
}




熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-3-22 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 5 楼』:  

还有下面这个程序也可做参考:
/////////////////////////////////////////////////////////////////////////////////
//  程序名: VOLSN.C                                 最后整理日期: 2002.08.08  //
//                                                                                                //
//  程序主要功能:                                                                           //
//               获得 IDE 硬盘逻辑盘 C 的卷序列号                                  //
//                                                                                               //
////////////////////////////////////////////////////////////////////////////////

#include
#include
#include
#include

void main(void)
{
    char serial_no[10];
    int i;
    union REGS r;
    struct SREGS s;
    unsigned sno1, sno2;
    r.x.ax = 0x6900;
    r.h.bl = 3;                        // A:1, B:2, C:3, D:4, etc ...
    segread(&s);
    intdosx(&r, &r, &s);
    if(r.x.cflag)
     {  *serial_no = '\0';}
    else
        {
            sno2 = *((unsigned far *)MK_FP(s.ds, r.x.dx+2));
            sno1 = *((unsigned far *)MK_FP(s.ds, r.x.dx+4));
            sprintf(serial_no,"%04x-%04x\n", sno1, sno2);
        }
    printf("The Volume Serial Number of Logic Disk [C] is %s", serial_no);
    asm
    {
        mov     ah, 4ch;
        int     21h;
    }
}




熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-3-22 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 6 楼』:  

希望楼主很很好的保护你的产品不被侵权,祝你好运!



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-3-22 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『第 7 楼』:  

谢谢各位鼎立相助,但不知各位的程序读的是物理序列号还是FAT格式化后的序列号,我还得实验一下,但总之谢谢各路高手了,特别谢谢KINGLION

2004-3-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 8 楼』:  

我上传的程序已经说明了其功能,楼主实验成功后不要忘了让大家知道噢!



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-3-23 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『第 9 楼』:  

一定一定

2004-3-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『第 10 楼』:  

感谢KINGLION,程序实验成功,
4楼的程序是读硬盘的物理序列号,5楼的是读硬盘的逻辑(格式化后随机分配)序列号,因为该序列号可以通过软件修改,建议大家加密时选用4楼的程序。
我是在TC2下运行的,当然其中的注释“//”要改成“/*    */”,还有由于TC没有inpw()函数,所以要将其改成 inport();——同样是读一个字;



2004-3-23 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jerrywang6
初级用户




积分 132
发帖 13
注册 2004-3-13
状态 离线
『第 11 楼』:  

今天我有将程序测试了以下DISKONCHIP公司的电子盘,发现无法读取该盘的物理序列号,经咨询说是没有该序列号,不知道真假,

极端郁闷!


2004-3-25 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: