如何在可执行文件中记录序列号?

Jes*_*ott 7 c# security usb

我试图保护应用程序只从特定的USB磁盘运行.我有代码从设备获取序列号,但我能按照我想要的方式工作的唯一方法是手动将序列号编码到二进制文件中.有没有办法我可以创建一个存根应用程序来修改现有的二进制文件,以便在编译后将序列号插入其中?我以前在C++中看到过这种情况,但那是很久以前的事了,我不记得我们当时是怎么做到的.

Bry*_*der 8

将它存储在组件中是一个坏主意.这就是我要做的事情(并且在过去做过类似的事情):

  1. 确保您正在签署程序集.
  2. 创建一个包含许可数据的XML文档 - 在您的情况下是USB设备的序列号.
  3. 利用.NET中的SignedXml库(实现XMLDSIG)来签署包含序列号的许可XML文档.您将使用用于对程序集进行签名的相同私钥.
  4. 当您的应用程序启动时,它会使用签名时使用的公钥验证XML文件的签名是否有效(并嵌入到程序集中).

显然,您不会发送私钥,因此如果应用程序需要自己生成XML配置文件(而不是您发送给用户的文件),则需要实现Web服务.