本文主要讲解如果使用C#语言来对超级狗进行二次开发,如果仅仅是做个激活的功能,可以参照另一篇博客,地址:http://www.cnblogs.com/dathlin/p/8487842.html

如果疑问,可以加QQ群:592132877

继续主题研究,如果使用C#来对超级狗进行二次开发。

楼主在研究这个超级狗的时候,直接某宝购买了开发狗和子狗两个狗,并没有购买demo狗,所以后来在研究开发套件里的Demo项目时,老是提醒找不到超级狗,一定要开发套件里生成的公司的独一无二的组件进行访问。

第一步,当然是下载公司的API库了

其中开发商代码文件很关键,等会要用到

然后耐心的等待下载完成就好了。

准备资源


接下来要找到两个重要的东西才能进行开发,一个是组件库,一个是开发商代码文件。

独一无二的组件库在我的电脑的文档里(可能不同的电脑会不一致)

把所有的组件拷贝出来,放到你自己的项目里去,然后引用dog_net_windows.dll即可

还有下面这个文件夹里的这个文件的内容,也是非常的重要,涉及到是否成功访问超级狗的关键。

然后在项目里新建一个类。把里面的字符串拷贝出来,如下:

应用篇

情景一:在软件中显示当前的激活状态


虽然一般来说,软件可运行就代表着激活了,但是对于超级狗而言,有很多种方式,可能是永久激活的,可能是限制了次数的,可能是限制了日期的,不管超级狗的特征是什么类型的,我们都希望在软件界面上友好的激活。

例如界面显示当前为永久激活,界面上显示当前激活天数只剩30天之类的

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

public DogStatus ReadDogActiveString( int feature, string verdorCode, out string msg )

{

    string scope = "<dogscope />";

    DogStatus status;

    Dog curDog = new Dog( new DogFeature( feature ) );

    status = curDog.Login( verdorCode, scope );

    if (status != DogStatus.StatusOk)

    {

        if (status == DogStatus.InvalidVendorCode)

        {

            msg = "Invalid vendor code.";

        }

        else if (status == DogStatus.UnknownVcode)

        {

            msg = "Vendor Code not recognized by API.";

        }

        else

        {

            msg = "Login to feature failed with status: " + status;

        }

        return status;

    }

    string info = string.Empty;

    DogStatus read = curDog.GetSessionInfo( "<dogformat><feature><attribute name=\"id\"/><element name=\"license\"/></feature></dogformat>"ref info );

    if (read == DogStatus.StatusOk)

    {

        // 读取特征成功

        XElement xElement = XElement.Parse( info ).Element( "feature" ).Element( "license" );

        string type = xElement.Element( "license_type" ).Value;

        if (type == "perpetual")

        {

            // 永久激活方式

            msg = "产品激活成功";

        }

        else if (type == "executions")

        {

            // 执行次数的验证方式

            msg = "总激活数:" + xElement.Element( "counter_fix" ).Value + " 当前激活次数:" + xElement.Element( "counter_var" ).Value;

        }

        else if (type == "expiration")

        {

            // 到期时间的激活方式

            string time_second = xElement.Element( "exp_date" ).Value;

            DateTime dateTime = new DateTime( 1970, 1, 1 ).AddSeconds( double.Parse( time_second ) );

            msg = "到期时间:" + dateTime.ToString( "yyyy-MM-dd" );

        }

        else if (type == "trial")

        {

            // 测试版

            DateTime dateTime = new DateTime( 1970, 1, 1 ).AddSeconds( double.Parse( xElement.Element( "time_start" ).Value ) );

            int days = int.Parse( xElement.Element( "total_time" ).Value ) / 3600 / 24;

            DateTime timeNow = DateTime.Now;

            curDog.GetTime( ref timeNow );

            msg = "剩余激活天数:" + (days - (int)(timeNow - dateTime).TotalDays);

        }

        else

        {

            msg = "激活方式未知";

        }

    }

    else

    {

        msg = "ReadFailed: " + read;

    }

    curDog.Logout( );

    curDog.Dispose( );

    return read;

}

此处提供一个通用的方法,读取超级狗的激活状态,并返回msg。使用方式如下:

1

2

3

4

5

6

7

8

9

10

private void button3_Click( object sender, EventArgs e )

{

    if(!int.TryParse(textBox1.Text,out int feature))

    {

        MessageBox.Show( "特征输入不正确" );

    }

    DogStatus status = ReadDogActiveString( feature, VendorCode.strVendorCode, out string msg );

    label2.Text = msg;

}

效果如下:

情景二:存储隐私数据,密码或是数据库连接字符串


想必这个应用也是非常广泛的了,如果你要验证用户的密码输入,如果不使用数据库实现,那么就只能直接判断了

1

2

3

4

5

6

7

8

9

10

string password = "123456";

if(password=="123456")

{

    // 密码正确

}

else

{

    // 密码错误

}

但是这样就会非常的危险,对付一般的小白用户可能无所谓,但是只要是知道些反编译技术的人,用反编译工具就可以很快知道这个密码了,然后就可以进去做某些XXXXX的事了。

可能有人会觉得把正确的密码存放在数据库好了,然后软件启动的时候加载数据库里的密码,这样不就安全了吗?但是你也公开了一个信息,那就是数据库连接字符串

1

Server=(local);Database=pubs;Uid=sa;Pwd=asdasd;

别人就知道了你的数据库的地址,用户名,密码,然后入侵到你的数据库服务器里,这样所有的数据都暴露了。

那么我们怎么用加密狗解决这个问题呢?加密狗里有数据文件,允许进行读写操作,OK,那么我们来试一下

我们新增一个数据文件,然后按照下面进行勾选,我们发现可以创建三种模式的数据文件,读写,只读,写一次,很好理解,这里我们创建个可读写的,长度为128字节。

然后点击确定,回到上个界面,点击编程超级狗,将信息写入到超级狗里。

刚才写的是文件ID是5,所以接下来就需要在代码上操作,我们先读取这个数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

public DogStatus ReadString( int feature, int fileId, string verdorCode, out string msg )

{

    string scope = "<dogscope />";

    DogStatus status;

    Dog curDog = new Dog( new DogFeature( feature ) );

    status = curDog.Login( VendorCode.strVendorCode, scope );

    if (status != DogStatus.StatusOk)

    {

        if (status == DogStatus.InvalidVendorCode)

        {

            msg = "Invalid vendor code.\n" ;

        }

        else if (status == DogStatus.UnknownVcode)

        {

            msg = "Vendor Code not recognized by API.\n" ;

        }

        else

        {

            msg = "Login to feature failed with status: " + status ;

        }

        return status;

    }

    DateTime time = DateTime.Now;

    DogFile file = curDog.GetFile( fileId );

    int size = 0;

    file.FileSize( ref size );

    byte[] buffer = new byte[size];

    file.Read( buffer, 0, size );

    msg = Encoding.ASCII.GetString( buffer ).Trim( '\0' );

    curDog.Logout( );

    return status;

}

调用该方法即可读取指定的数据文件的信息,比如,数据文件5,读取出来就是Sample Data File

1

2

3

4

5

private void button2_Click( object sender, EventArgs e )

        {

            ReadString( 1, 5, VendorCode.strVendorCode, out string msg );

            label2.Text = msg;

        }

写入的通用方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

public DogStatus WriteString( int feature, int fileId, string verdorCode, out string msg ,string content)

        {

            string scope = "<dogscope />";

            DogStatus status;

            Dog curDog = new Dog( new DogFeature( feature ) );

            status = curDog.Login( VendorCode.strVendorCode, scope );

            if (status != DogStatus.StatusOk)

            {

                if (status == DogStatus.InvalidVendorCode)

                {

                    msg = "Invalid vendor code.\n";

                }

                else if (status == DogStatus.UnknownVcode)

                {

                    msg = "Vendor Code not recognized by API.\n";

                }

                else

                {

                    msg = "Login to feature failed with status: " + status;

                }

                return status;

            }

            DateTime time = DateTime.Now;

            DogFile file = curDog.GetFile( fileId );

            byte[] buffer = Encoding.ASCII.GetBytes( content );

            file.Write( buffer, 0, buffer.Length );

            msg = "success";

            curDog.Logout( );

            return status;

        }

下面就是调用演示的方法

1

2

3

4

private void button5_Click( object sender, EventArgs e )

        {

            WriteString( 1, 5, VendorCode.strVendorCode, out string msg, "Server=(local);Database=pubs;Uid=sa;Pwd=asdasd;" );

        }

我们把数据库的信息写入到超级狗里,然后再读取出来就,相对的提升了安全性。然后再读取这个数据

注意:如果你在写入了"123456",然后再读取字符串信息 "123456=(local);Database=pubs;Uid=sa;Pwd=asdasd;"

写入了时候需要外带清空后面的字符串。

赛孚耐SafeNet开发狗超级狗开发入门相关推荐

  1. 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解路径

    文章转载自:USB-Key逆向研究中心https://www.ukeycopy.com/h-col-127.html 赛孚耐SafeNet宏狗GrandDog微狗MicroDog加密狗复制破解 一.复 ...

  2. 赛孚耐SafeNet开发狗超级狗程序外壳加密

    本篇针对超级狗进行讲解,对应的超级狗套件的工具包版本为2.4版本.超级狗图片如下: 主要包含两个狗,一个是超级狗,一个是开发狗,在本博文中都是必须的.首先先安装光盘中的开发套间. 接下来就开始演示一个 ...

  3. 新一代经济型加密狗——超级狗

    快速实现高安全度的软件保护,轻松定义多种软件授权模式. 超级狗是加密狗家族中最新一代软件保护和授权产品.它提供了强大的软件防盗版功能以及灵活的软件授权功能,保护软件开发商的知识产权与核心技术,确保开发 ...

  4. 加密狗 超级狗 加密程序 程序授权示例 程序授权验证

    篇针对超级狗进行讲解,对应的超级狗套件的工具包版本为2.4版本.超级狗图片如下: 主要包含两个狗,一个是超级狗,一个是开发狗,在本博文中都是必须的.首先先安装光盘中的开发套间. 接下来就开始演示一个简 ...

  5. C# 加密狗 超级狗 加密程序 程序授权示例 程序授权验证

    本篇针对超级狗进行讲解,对应的超级狗套件的工具包版本为2.4版本.超级狗图片如下: 主要包含两个狗,一个是超级狗,一个是开发狗,在本博文中都是必须的.首先先安装光盘中的开发套间. 接下来就开始演示一个 ...

  6. 使用赛孚耐数据保护解决方案在整个生命周期内确保信息安全连载三:云范例威胁为信息保护基础带来更大的威胁...

    云作为卸载点 上面提及的挑战本身就很让人望而生畏了,但是当今新兴的云范例威胁为信息保护基础带来更大的威胁. 多数关于信用.所有权和信息风险的假设都是以对有区别性(即使是频繁分裂的)周界的现实世界的理解 ...

  7. 金雅拓超级狗superdog

    超级狗是SafeNet在圣天诺基础上为中国本土量身定制的新一代加密狗. 超级狗操作简单,非常安全,功能实用,助您轻松完成高强度加密. PDF和flv, swf, mpg, dat, avi, wav, ...

  8. 超级狗--让软件加密举重若轻

    软件盗版和侵权等行为,一直是全球软件开发商的死敌.根据商业软件联盟公布年度研究显示,在2011年,全球因为软件盗版造成的经济损失已经达到634亿美元,而这种损害在新兴经济体中最为明显.包括中国在内的亚 ...

  9. C#使用SafeNet的开发狗和超级狗加密使用方法

    1.在安装光盘中选择Windows文件夹,单击Setup.exe执行安装程序,安装过程默认选择,单击下一步即可. 2.安装完毕后插入超级狗,在菜单栏中打开"超级狗开发商向导",选择 ...

最新文章

  1. 说说JavaScriptCore
  2. 2021-03-20 包含生成树的性质
  3. Mybatis中typeAliases的使用
  4. 从零学习机器学习_机器学习:如何从零变英雄
  5. 前端学习(2999):vue+element今日头条管理--element导入
  6. x=5y=8c语言表达式,中国大学MOOC: 假设变量x的位数为n(n=8),x的最高有效字节不变,其余各位全变为0,则对应C语言表达式为( )。 答案:(x(n-8))(n-8)...
  7. 初识 NGINX 服务网格
  8. 让整个网站变成灰色的做法
  9. python遍历文件夹方法
  10. ubuntu 搭建正版彩虹秒赞网
  11. 动手学数据分析之数据加载及探索性数据分析
  12. 数据结构与算法(三):链表
  13. 100个常用的 PHP 类库、资源和技巧小结
  14. 骨传导耳机对耳朵好不好、不伤耳的骨传导耳机推荐
  15. 解决QQ安全进程(护盾)弹出问题
  16. 转载:farey(法莱)数列
  17. 算法设计课第十周作业
  18. 如何在64位win10系统下通过virtualbox虚拟机安装苹果macOS 10.12
  19. 各个领域公开数据集下载(持续更新)
  20. 探秘百度开放云—数字媒体解决方案

热门文章

  1. 金智视讯java,公安行业平台解决方案
  2. Python使用Selenium实现淘宝网滑块登陆
  3. 光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT、恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式
  4. maya软件在建模上有什么优势呢?你知道吗?
  5. tp5二级域名如何配置
  6. CentOS/Ubuntu制作自动安装iso实操
  7. JQ点击改变当前元素子元素的样式,点击兄弟元素移除当前元素子元素样式
  8. oracle+x6-2+价格,Sun/Oracle Server X6-2服务器全新原包 现货出售
  9. 爱课程课件和文档下载方式
  10. Library auk_dspip_lib not found问题解决