当前位置: 首页 > news >正文

[讨论]在.NET下获取硬盘序列号的问题

一般软件的注册机制可以通过获取硬件序列号,然后用非对称加密算法生成相应的公钥私钥。但是用Managed Code写获取硬盘序列号的代码不能解决所有的问题,比如不能在非管理员的权限下使用,前几天Sunmast在他的Blog上发布了《如何得到硬盘序列号?.NET版本[C#]》,就是没有解决这个问题,用WMI也有很多问题。

要想顺利获取硬盘的序列号,目前只能依靠非托管代码了。DiskId32是一个源码公开的C++程序,可以解决上述问题。由于代码比较底层,我对VC和DDK不熟悉,没有能力将其封装为DLL,希望各位帮忙!

还有,就算封装好了这个Native DLL并可以使用了,但还有问题没有解决what_smile.gif。如果封装到了Native DLL,该DLL很容易被人替换成另外一个,毕竟在Managed Code里面可以看到调用Native DLL的函数声明,别人只要模仿这些函数界面重新写一个新的就很容易达到破解目的了。不过具体我没有测试过,不知道行不行。

于是我又想到了另外一个方法,就是把获取硬盘序列号的Native DLL作为资源文件封装到Managed Code中,然后在每次要调要该DLL时,先把该DLL写入磁盘,再动态绑定。由于Managed Code可以通过混淆器来保护,以致不能对其进行修改,这个我在《如何保护我们的 .NET 程序集?》中已经给出了答案。动态绑定Native DLL又是另外一个技术难题,我已经找到了一些资料,与大家分享tongue_smile.gif
Late binding on native DLLs with C#
Late-Binding DLLs in C#
Using legacy plug-ins with .NET - Part 1
Using legacy plug-ins with .NET - Part 2
C-Function pointer for .NET
Dynamic PInvoke method calls

不过最牛的就是下面这一招了!直接把Native Code用字节数组保存在Managed Code中,然后调用,真是牛B,不过我还没有完全弄懂,希望大家来实践实践。
Execute Native Code From .NET

另外还有一篇文章是关于加密字符串的,值得研究!
Poly-Engine Crypt String

希望各位多多交流.NET程序的保护问题,找出最好的解决方案!

<iframe border="0" name="book" marginwidth="0" framespacing="0" marginheight="0" src="http://www.netyi.net/in.asp?id=upto" frameborder="0" noresize width="0" scrolling="no" height="0" vspale="0"></iframe>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • html input range修改,HTML Input Range value用法及代码示例
  • html导入图片怎么缩小体积,如何减小网页html体积几点方法介绍
  • 平生事,此时凝睇,谁会凭栏意!(1)
  • html 中写目录列表,如何使用Python生成html目录列表
  • 计算机专业学渣面试,感觉读了计算机专业真的是一条不归路
  • 平生事,此时凝睇,谁会凭栏意!(2)
  • html 根作用域,AngularJS Scope(作用域)
  • html无法引入less样式,@import less样式文件 只有css样式生效, less样式却不生效
  • 平生事,此时凝睇,谁会凭栏意!(3)
  • lol提示游戏环境异常重启计算机,出现LOL游戏环境异常请重启机器怎么解决?
  • HOW TO:如何在 Windows Server 2003 中配置 IPSec 隧道
  • html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
  • 计算机学硕很难考吗,计算机考研有多难
  • 平生事,此时凝睇,谁会凭栏意!(4)
  • 计算机如何更改用户名的背景,win7系统如何修改电脑登录界面|win7更换登录界面背景的方法...
  • 03Go 类型总结
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • AHK 中 = 和 == 等比较运算符的用法
  • angular学习第一篇-----环境搭建
  • Bytom交易说明(账户管理模式)
  • CentOS7简单部署NFS
  • CSS 提示工具(Tooltip)
  • eclipse的离线汉化
  • Effective Java 笔记(一)
  • Iterator 和 for...of 循环
  • maya建模与骨骼动画快速实现人工鱼
  • Vue2.x学习三:事件处理生命周期钩子
  • webpack入门学习手记(二)
  • 彻底搞懂浏览器Event-loop
  • 复杂数据处理
  • 构造函数(constructor)与原型链(prototype)关系
  • 记一次删除Git记录中的大文件的过程
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聚簇索引和非聚簇索引
  • 漂亮刷新控件-iOS
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 系统认识JavaScript正则表达式
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 自定义函数
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • PostgreSQL之连接数修改
  • ###STL(标准模板库)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (1)Jupyter Notebook 下载及安装
  • (152)时序收敛--->(02)时序收敛二
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (层次遍历)104. 二叉树的最大深度
  • (二)原生js案例之数码时钟计时
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • .NET 命令行参数包含应用程序路径吗?